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

MessageBoxManager - 一个提供增强型 MessageBox 功能的 Windows Forms 组件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (52投票s)

2006年2月19日

Ms-PL

4分钟阅读

viewsIcon

266915

downloadIcon

7795

MessageBoxManager 是一个Windows Forms组件,您可以将其拖放到Windows Forms项目的MianForm中,它提供了增强的消息框功能,而无需您更改现有MessageBox.Show()重载的任何调用。

引言

MessageBoxManager 是一个Windows Forms组件,您可以将其拖放到Windows Forms项目的MianForm中,它提供了增强的消息框功能,而无需您更改现有MessageBox.Show()重载的任何调用。它支持各种功能,例如自动关闭消息框,如下面的动画GIF所示。请注意,在倒计时期间,“确定”按钮被禁用,并在倒计时结束时启用。您还可以看到已添加到消息框的“下次不再显示此对话框”复选框。再次注意,您无需更改现有使用MessageBox.Show的代码,甚至无需更改P/InvokeMessageBoxMessageBoxIndirect API函数调用的代码。

其他功能包括强制使用自定义图标(覆盖默认图标)的功能,这可以在页面顶部的截图中看到,以及设置自定义字体的功能。当您设置自定义字体时,消息框及其子控件会扩展以适应字体大小的增加。请注意,如果使用不当的字体大小,您将获得意外的结果。拉伸算法假定自定义字体大小在合理的值范围内。这是显示自定义字体效果的截图。

使用该类

使用此类非常简单,如上图所示。只需将组件添加到工具箱,然后将其拖放到主窗体中。每个应用程序每个线程只能使用一个组件实例。如果您有一个拥有UI的辅助线程(例如窗体),则该线程需要一个独立的MessageBoxManager组件实例,并且当辅助线程中的实例处于活动状态时,主线程中的实例*必须*暂时禁用。尝试从多个线程或甚至从一个线程使用多个活动的MessageBoxManager对象将导致意外行为,并可能影响程序执行。该组件完全由属性组成(除了编译器生成的默认构造函数外,没有实例方法),并且这些属性中的每一个都可以直接使用VS 2005属性窗口进行设置(如上图所示)。下一节将快速介绍这些属性提供的功能。

类参考

  • bool HookEnabled:启用和禁用扩展的消息框功能。如果设置为false,则您的消息框将正常工作。

  • int TimeOut:指定用于自动关闭、按钮禁用和标题倒计时功能的超时秒数。

  • bool AutoClose:将其设置为true,以便在TimeOut属性指定的秒数过去后自动关闭消息框。

  • DialogResult AutoCloseResult :当设置AutoClose属性时,可以通过此属性指定一个DialogResult,该结果将由调用代码(调用消息框的代码)看到。

  • bool ShowTitleCountDown :如果设置为true,标题将显示倒计时,并在倒计时结束时恢复原始文本。

  • bool DisableButtons :如果设置为 true,在倒计时期间(如果存在),除“取消”按钮(如果存在)之外的所有按钮都将被禁用。倒计时结束后,按钮将重新启用。

  • bool DisableCancel :如果设置为 true,并且 DisableButtons属性也设置为true,则“取消”按钮(如果存在)将被禁用。如果 DisableButtons属性为false,则此属性无效。

  • bool CenterWindow :如果为true,则消息框将居中显示在其父窗口上。

  • bool ShowNextTimeCheck :如果设置为true,将显示一个复选框,提示用户下次是否显示对话框。消息框的大小将调整以适应此复选框。复选框的状态通过LastCheckState属性检索。

  • bool LastCheckState :此属性返回显示带有“下次不再显示”复选框的最后一个消息框的复选框状态。如果您将ShowNextTimeCheck设置为false,请注意,此属性将继续保留其先前的值。

  • Font TextFont :您可以为消息框及其控件(包括按钮)设置自定义字体。请明智地使用此功能。消息框的大小会根据字体大小的变化(如有)进行调整。

  • Icon CustomIcon :将其设置为 true以强制替换消息框图标(如果存在)为自定义图标。请注意,如果此属性为true,所有图标都将被盲目替换。如果您想在应用程序显示的所有消息框中显示产品图标,这将非常有用。

历史

  • 2006年2月18日 - 首次发布
© . All rights reserved.