如何更改MessageBox位置?

时间:2011-03-13 11:46:17

标签: c# messagebox

我需要更改消息框位置。我不希望它出现在页面的中心。

MessageBox.Show("Hello");

5 个答案:

答案 0 :(得分:11)

通常,您无法更改标准消息框的启动位置。

您的问题的解决方案:

答案 1 :(得分:2)

您需要创建一个继承自MessageBox表单的新表单。这是访问位置属性的唯一方法。

答案 2 :(得分:2)

有一种方法可以改变位置,但它对于这么小的任务来说太复杂了。
如果您确实需要更改其位置,则可以显示它,然后使用GetForegroundWindow获取窗口句柄,然后使用MoveWindow到您想要的位置。
但是,正如我已经说过的那样,这太复杂了。
只需创建一个带有标签的自己的表单,然后单击“确定”按钮即可。将按钮设置为默认窗口按钮,然后在Form1中执行MyWndName.ShowDialog();

答案 3 :(得分:2)

您可以做的是创建一个新窗口,将属性AllowTransparency设置为true并将Background设置为Transparent。在该窗口中,您可以放置​​TextBlock或标签,还可以添加Yes / No Buttons。使用Canvs.SetTop(Window,TopPosition)和Canvas.SetLeft(Window,LeftPosition)设置此窗口的位置。接下来,使用Show()或ShowDialog()方法调用窗口。

答案 4 :(得分:0)

由于我已经将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将在左上角。
  • 这取决于屏幕。如果要准确,则需要其他代码来确定位置
  • 此任务是更改消息框的绝对位置,而不是移动它。
  • 此处未介绍如何获取/安装AutoIt。如果需要,请寻求有关的指示。