65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (15投票s)

2005年3月30日

1分钟阅读

viewsIcon

187853

downloadIcon

5141

一个简单的组件,可以将任何消息框、窗体或常用对话框居中显示在应用程序中。

Example

引言

.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 起运行良好。

© . All rights reserved.