我需要改变消息框的位置。我不希望它位于页面的中心。
MessageBox.Show("Hello");
通常情况下,无法更改标准消息框的启动位置。
解决方案:
您需要创建一个继承自MessageBox窗体的新表单。这是访问位置属性的唯一方式。
有一种方法可以改变位置,但对于这样一个小任务来说,太过复杂。
如果您真的需要更改其位置,您可以先显示它,然后使用GetForegroundWindow
获取窗口句柄,然后使用MoveWindow
将其移动到所需位置。
但是,正如我已经提到的,这太过复杂了。
只需创建自己的表单并在上面放置一个标签和一个“确定”按钮。将该按钮设置为默认窗口按钮,然后在Form1中执行MyWndName.ShowDialog();
GetForegroundWindow
会给你创建的消息框的句柄。可能会发生另一个应用程序在那一刻进入前台的情况。 - kyrylomyr由于我在项目中已经使用AutoIt来完成其他任务,所以我只需创建另一个线程来移动消息框。
using System.Threading;
using AutoIt;
//Namespace, class, function stuffs
//New thread BEFORE create message box - safety measure
Thread autoItThread = new Thread(delegate ()
{
AutoItX.WinWait("New Message box");
AutoItX.WinMove("New Message box", "This box will be moved", 400, 300);
});
autoItThread.Start();
MessageBox.Show("This box will be moved", "New Message box");
400,300
是绝对的。 0,0
将成为左上角。
winforms
有点不正确,因为MessageBox
在WPF中也可用。 - kyrylomyr