VDialog:一个兼容Vista任务对话框的自定义对话框

许多程序员希望在早期的Windows系统(如Windows 2000/XP)上使用Windows Vista的任务对话框,但遗憾的是这是不可能的。尽管互联网上有一些任务对话框的实现,但它们都不是用VB.NET编写的。因此,决定编写自己的类似于Vista任务对话框的表单版本,它几乎完全兼容MessageBox类,并且实现了Vista任务对话框的一些功能(其余的功能将在以后实现)。一些尚未实现的功能可以通过自定义控件(如单选按钮或进度条)来模拟。

如何使用VDialog

VDialog类与MessageBox类兼容,因此可以以相同的方式使用,例如:

VDialog.Show(Me, "Text", "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Error)

要自定义VDialog的外观,必须创建一个VDialog对象,设置其属性,然后调用Show()方法,例如:

Dim vd As New VDialog() With vd .WindowTitle = "Windows Vista" .Owner = Me .MainInstruction = "You must click OK button to continue" .Buttons = New VDialogButton() { New VDialogButton(VDialogResult.OK), New VDialogButton(VDialogResult.Continue) } .MainIcon = VDialogIcon.SecurityShieldBlue .DefaultButton = VDialogDefaultButton.None .Content = "If you don't know what to do, click Cancel button." .LockSystem = True .CustomControl = New MyCustomControl() .Show() End With

特性

与MessageBox类几乎完全兼容,现有的代码可以轻松更改为使用VDialog类而不是MessageBox类,只需将MessageBox.Show(…)调用更改为VDialog.Show(…)调用即可。

支持的方法:

Show(String) As DialogResult Show(String, String) As DialogResult Show(String, String, MessageBoxButtons) As DialogResult Show(String, String, MessageBoxButtons, MessageBoxIcon) As DialogResult Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton) As DialogResult Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions) As DialogResult Show(IWin32Window, String) As DialogResult Show(IWin32Window, String, String) As DialogResult Show(IWin32Window, String, String, MessageBoxButtons) As DialogResult Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon) As DialogResult Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton) As DialogResult Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions) As DialogResult

高级用法

VDialog类还可以以另一种方式使用。可以创建一个VDialog对象并设置其属性,例如:

  • Owner — 确定VDialog消息窗口的父窗口。
  • Content, ContentLinks, WindowTitle和MainInstruction — 确定将显示的对话框窗口的内容、窗口标题和主要指令。
  • Buttons — 确定将在VDialog消息窗口上显示哪些按钮。VDialogButton是一个包含UseCustomText, Text和VDialogResult属性的类,还有一个Click事件,当关联的按钮被点击时(但在关闭窗口之前)会触发该事件。
  • MainIcon, CustomMainIcon — 窗口左侧(或在右至左布局使用时的右侧)显示的图像。
  • DefaultButton — 确定最初聚焦的按钮。
  • RightToLeft和RightToLeftLayout — 确定窗口布局是否应该“镜像”。
  • Result — 指示VDialog窗口的返回值。
  • LockSystem — 启用类似于UAC的系统锁定行为。
  • CustomControl — 提供一种简单的方法来扩展VDialog窗口。它可以用来模拟尚未支持的TaskDialog的功能。
  • VerificationText和VerificationFlagChecked — 管理按钮左侧显示的复选框。它可以用来实现“不再显示”之类的复选框。
  • Sound — 当对话框窗口显示时播放的声音。
  • FooterText, FooterLinks, FooterIcon和CustomFooterIcon — 确定页脚的文本和图像。
  • ExpandedInformation, ExpandedInformationLinks, ExpandFooterArea, ExpandedByDefault, ExpandedControlText和CollapsedControlText — 确定展开控件和带有额外信息的标签的外观和行为。

本地化支持

标准按钮的标题(例如OK, Yes, Ignore等)可以通过翻译资源文件轻松本地化。这些标题的英文版本包含在Resources.resx文件中。

图像

VDialogIcon类包含十二个只读字段,提供对类似Vista的图像的访问,例如:

  • Information
  • Question
  • Warning
  • Error
  • SecurityShield, SecurityShieldBlue, SecurityShieldGray
  • SecuritySuccess
  • SecurityQuestion
  • SecurityWarning
  • SecurityError

还有一个None字段。将VDialogIcon.Security*字段(除了SecurityShield)分配给VDialog类的MainIcon属性会导致在图标和主要指令下方绘制相应的渐变。

声音

VDialogSound类提供了对六个声音(Default, Information, Question, Warning, Error, Security)的访问,这些声音可以分配给VDialog类的Sound属性。可以通过实现ISound接口的对象提供自定义声音。

命令链接

有一个动画CommandLink控件,可以用来构建自定义控件,然后嵌入到VDialog中。

待办事项

尽管VDialog类提供了许多有用的属性,但还有一些TaskDialog的功能尚未实现,例如:

  • 对CommandLinks的完全支持
  • RadioButtons
  • ProgressBar
  • Timer

这些功能只能通过使用自定义控件获得。

1.5 (15.10.2008) — 重要!这是控制的最后一个“独立”版本。下一个版本包含在CodePlex上托管的新项目中。

1.4 (02.01.2008) — 添加了对Links的支持。

1.3 (12.12.2007) — 添加了对CommandLinks的部分支持。

1.2 (05.12.2007) — 添加了XML文档。

1.1 (18.11.2007) — 重命名了一些属性,使其符合TaskDialog。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485