将消息框、常用对话框或窗体居中显示在应用程序中






4.83/5 (15投票s)
2005年3月30日
1分钟阅读

187853

5141
一个简单的组件,可以将任何消息框、窗体或常用对话框居中显示在应用程序中。
引言
.NET 标准的 MessageBox
居中显示在屏幕区域,而不是应用程序中。这段代码包含一个简单的组件,它使用钩子来将 MessageBox
以及其他常用对话框或窗体居中显示在应用程序区域中。
背景
本文将不会详细解释如何在窗口中使用钩子。该组件将添加一个 WH_CALLWNDPROC
钩子,在打开对话框之前查找 WM_INITDIALOG
消息。当此消息发生时,窗口将居中显示在所有者窗口上,或者如果所有者窗口为 null
,则居中显示在活动窗口上。
使用代码
使用这段代码非常简单。它与使用标准的 MessageBox
相同。
以下 static
方法可用:
DlgBox.ShowDialog(...)
用于常用对话框和窗体。
MsgBox.Show(...)
用于标准的
MessageBox
,您可以定义标题。AppBox.Show(...)
用于标准的
MessageBox
,标题为Application.ProductName
。ErrBox.Show(...)
用于标准错误
MessageBox
,显示消息或异常。
示例:以下代码显示一个居中的 OpenFileDialog
DlgBox.ShowDialog(new OpenFileDialog());
示例:以下代码显示一个居中的异常错误消息
try
{
...
}
catch (Exception ex)
{
ErrBox.Show(ex);
}
可以添加标准的按钮或图标。所有 MessageBox
方法都被封装了。
示例:以下示例显示一个居中的富文本消息框
AppBox.Show("Rich Application Box",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);
关注点
有一个基类 WindowsHook
用于创建其他钩子。WndProcRetHook
基于这个类。您可以使用这个基类来创建您自己的钩子。
还有一个 TrueScreenRect
属性,用于在多显示器显示中检索真实的屏幕尺寸。
历史
此版本自 1.1.2003 起运行良好。