将消息框相对于表单进行居中对齐
问题的出现原因:
该自定义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这个问题的出现原因以及解决方法。
如果你在讨论的是一个标准的MessageBox
,并且你希望它在调用它的Form
中居中显示,那么可以尝试使用这个解决方法。请注意,你应该查看来自"Joe"的答案,而不是被标记为答案的那个。
我使用过这个方法,效果非常好。