将消息框相对于表单进行居中对齐

13 浏览
0 Comments

将消息框相对于表单进行居中对齐

如何让对话框出现在表单的中央,而不是窗口的中央?

0
0 Comments

问题的出现原因:

该自定义MessageBox的问题是,无论父窗体是否居中显示,MessageBox始终在屏幕中央显示。

解决方法:

1. 在MessageBoxForm类的OnLoad方法中,判断是否有父窗体,如果没有则将MessageBox居中显示在屏幕中央。

2. 将OnLoad方法中的代码修改为:

protected override void OnLoad(EventArgs e)
{
    this.Owner = Form.ActiveForm;
    if(this.Owner == null) 
    {
        this.StartPosition = FormStartPosition.CenterScreen;
        this.TopMost = true; //将MessageBox置顶显示
        int screenWidth = Screen.PrimaryScreen.WorkingArea.Width;
        int screenHeight = Screen.PrimaryScreen.WorkingArea.Height;
        int messageBoxWidth = this.Width;
        int messageBoxHeight = this.Height;
        this.Location = new Point((screenWidth - messageBoxWidth) / 2, (screenHeight - messageBoxHeight) / 2);
    }
    base.OnLoad(e);
}

以上就是Centering the messagebox with respect to the form这个问题的出现原因以及解决方法。

0
0 Comments

如果你在讨论的是一个标准的MessageBox,并且你希望它在调用它的Form中居中显示,那么可以尝试使用这个解决方法。请注意,你应该查看来自"Joe"的答案,而不是被标记为答案的那个。

我使用过这个方法,效果非常好。

0