C# 如何更改MessageBox的位置?
我需要更改消息框的位置。我不想让它在这页的中间C# 如何更改MessageBox的位置?,c#,messagebox,C#,Messagebox,我需要更改消息框的位置。我不想让它在这页的中间 MessageBox.Show("Hello"); 您需要创建一个从MessageBox表单继承的新表单。这是访问位置属性的唯一方法。通常,您不能更改标准消息框的启动位置 您的问题的解决方案: 创建自己的自定义消息框。 有一个关于创造的例子 复杂的使用方法 有一种方法可以改变位置,但对于这样一个小任务来说,这种方法太复杂了 如果确实需要更改其位置,可以显示它,然后使用getforegroughindow获取窗口句柄,然后MoveWindow移
MessageBox.Show("Hello");
您需要创建一个从MessageBox表单继承的新表单。这是访问位置属性的唯一方法。通常,您不能更改标准消息框的启动位置 您的问题的解决方案:
- 创建自己的自定义消息框。 有一个关于创造的例子
- 复杂的使用方法
- 有一种方法可以改变位置,但对于这样一个小任务来说,这种方法太复杂了
如果确实需要更改其位置,可以显示它,然后使用
getforegroughindow
获取窗口句柄,然后MoveWindow
移动到所需位置但是,正如我已经标注的,这太复杂了
只需创建自己的表单,表单上有一个标签和一个“确定”按钮。将该按钮设置为默认窗口按钮,然后在Form1 do
MyWndName.ShowDialog()中代码>您可以做的是创建一个新窗口,将属性AllowTransparency设置为true,并将背景设置为Transparency。在该窗口中,您可以放置文本块或标签,还可以添加是/否按钮。使用Canvs.SetTop(window,TopPosition)和Canvas.SetLeft(window,LeftPosition)设置此窗口的位置。接下来,使用Show()或ShowDialog()方法调用窗口。因为我已经在项目中的其他几个任务中使用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");
请注意
- 坐标
400300
为绝对坐标<代码>0,0
将位于左上角李>
我已将您的标题从
massagebox
(听起来很可爱)更改为messagebox
@jgauffin,标记winforms
有点不正确,因为messagebox
在WPF中也可用。您的可能副本无法确保GetForeGroundIndow
将为您提供创建的消息框的句柄。此时可能会有另一个应用程序进入前台。您指向Windows钩子过程的链接已断开。