在表单面板的中心显示 msgbox
Posted
技术标签:
【中文标题】在表单面板的中心显示 msgbox【英文标题】:Show msgbox in the center of the panel on the form 【发布时间】:2021-10-16 15:59:00 【问题描述】:下午好! 告诉我,是否可以将 msgbox 放在表单面板的中心?还是更容易将表单创建为消息并将其称为居中?
【问题讨论】:
为什么这个标签是c#和 vb.net?您使用的是哪个 UI 堆栈? WinForms,WPF,还有什么? 这能回答你的问题吗? How do I change the MessageBox location? How can I make MessageBox appear centered on MainForm? -- 您可以使用 UI 自动化的WindowPatter.WindowOpened
事件来简化程序,以检测何时显示 MessageBox 窗口,然后自动将其移动到您喜欢的位置(使用事件处理程序) . -- 你可以通过构建自己的 MessageBox 来进一步简化它。
你也可以使用SetWinEventHook注册EVENT_SYSTEM_DIALOGSTART,它会在Dialog启动时通知你,返回它的Handle。然后您可以使用SetWindowPos()
移动它。您可以使用此处描述的相同过程:Move window when external application's window moves,只需替换 EVENT_OBJECT_LOCATIONCHANGE
。
【参考方案1】:
您可以将MessageBox
置于Panel
的中心,但创建自定义的要容易得多。这可能会对您有所帮助,您可以使用 Location
、Size
和其他属性。
var myMessageBox = new Form
StartPosition = FormStartPosition.Manual,
ShowInTaskbar = false,
Size = new Size(400, 180),
Location = new Point(this.Location.X + panel1.Location.X + panel1.Width / 2 - 200, this.Location.Y + panel1.Location.Y + panel1.Height / 2 - 90),
Text = "MessageBox",
ShowIcon = false,
;
Label label = new Label
Name = "label",
Text = "Some text.",
AutoSize = true,
MaximumSize = new Size (myMessageBox.Width - 30, myMessageBox.Height),
Location = new Point(10, 65)
;
myMessageBox.Controls.Add(label);
myMessageBox.ShowDialog();
【讨论】:
以上是关于在表单面板的中心显示 msgbox的主要内容,如果未能解决你的问题,请参考以下文章