在表单面板的中心显示 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 的中心,但创建自定义的要容易得多。这可能会对您有所帮助,您可以使用 LocationSize 和其他属性。

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的主要内容,如果未能解决你的问题,请参考以下文章

在中心制作更新进度面板

Extjs 无法在表单面板中动态添加/删除字段

extjs表单面板设置默认值textfield

如何在win应用程序中的面板其他表单中加载表单

52.原型1 图片放大效果(动态面板的嵌套使用)

无法获取选项卡面板的对象