关于... “关于”对话框






4.70/5 (96投票s)
2004 年 6 月 13 日
3分钟阅读

314332

4504
为开发者和用户提供可重用的“关于”对话框窗体。
引言
“关于”对话框并不是任何应用程序的必要组成部分,但它扮演着重要的角色,作为应用程序的“狗牌”。
这个对话框有两个截然不同的目标受众。
- 用户:用于识别应用程序的名称、制作者、创建时间和版本。非常基本的信息。
- 开发者:用于提供极其详细的构建、版本和文件信息。通常在对已编译、已部署的代码进行故障排除时使用。
您绝对应该有一个“关于”对话框——但继续使用狗牌的比喻,如果您经常拿出狗牌,这说明存在更深层次的问题(Mediiiic!)。当您需要它时,它可以成为救命稻草。它可以不常使用,但它也需要提供不错的诊断信息。带有滚动文本和 3D 图形的装饰性“关于”对话框可能很有趣,但它们没有帮助。
为了满足这两大用户群体的需求,“关于”对话框提供了两种视图:一个简单的基本视图,供用户使用;以及一个更为详细的视图(通过“更多 >>”按钮访问),供开发者使用。
使用代码
此窗体旨在成为一个独立的、可重用的组件;只需将 AboutBox.vb 文件拖放到您的项目中,然后像实例化任何其他窗体一样实例化它。它没有特殊的依赖关系。
Private Sub MenuItemAbout_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles MenuItemAbout.Click
Dim frmAbout As New AboutBox
frmAbout.ShowDialog(Me)
End Sub
这提供了最简单的默认“关于”对话框行为。这应该适用于大多数应用程序开箱即用(如屏幕截图所示)。如果您想自定义窗体的行为,它确实有一些可选属性,可以在显示对话框之前设置。
Public Property AppEntryAssembly() As System.Reflection.Assembly
Public Property AppTitle() As String
Public Property AppDescription() As String
Public Property AppVersion() As String
Public Property AppCopyright() As String
Public Property AppImage() As Image
Public Property AppMoreInfo() As String
Public Property AppDetailsButton() As Boolean
示例应用程序演示了如何设置这些属性以自定义对话框中的文本。
关注点
“关于”对话框窗体呈现的主要信息自动从 AssemblyInfo.* 文件派生。作为最佳编程实践,应始终为所有程序集填充AssemblyInfo.* 文件,但在这种情况下,您需要加倍确保。
<Assembly: AssemblyTitle("About Box Demo")>
<Assembly: AssemblyDescription("Demonstration of AboutBox.vb code")>
<Assembly: AssemblyCompany("Atwood Heavy Industries")>
<Assembly: AssemblyProduct("Demo code")>
<Assembly: AssemblyCopyright("© 2004, Atwood Heavy Industries")>
<Assembly: AssemblyTrademark("All Rights Reserved")>
其余详细信息通过 .NET 的内置且非常强大的反射功能收集。
构建日期是根据 AssemblyInfo.* 中指定的构建号和修订号自动为每个程序集计算的。
<Assembly: AssemblyVersion("4.1.*")>
此算法仅在使用了标准自动递增值时才有效(如图所示)
dt = CType("01/01/2000", DateTime). _
AddDays(AssemblyVersion.Build). _
AddSeconds(AssemblyVersion.Revision * 2)
If TimeZone.IsDaylightSavingTime(dt, _
TimeZone.CurrentTimeZone.GetDaylightChanges(dt.Year)) Then
dt = dt.AddHours(1)
End If
If dt > DateTime.Now Or AssemblyVersion.Build < 730 Or _
AssemblyVersion.Revision = 0 Then
dt = AssemblyLastWriteTime(a)
End If
如果您覆盖了构建号或修订号,我无法通过这种方式计算构建日期。在这些情况下,我使用程序集 DLL 文件上的 GetLastWriteTime
。我不知道任何更准确的获取构建日期的方法,但在两者之间,构建时间通常是正确的。
历史
- 2004 年 6 月 14 日星期一 - 发布。
- 2004 年 12 月 19 日星期日 - 版本 1.1
- 代码重构,以提高可读性和简洁性。
- 切换到
RichTextBox
以获得更多文本,因此 URL 和 MAILTO 在.AppMoreInfo
属性中自动受到支持。 - 在“程序集详细信息”选项卡中枚举了更多程序集属性。
- 转换为 VB.NET 2005 风格的 XML 注释。
- 现在拥有 36% 更多的牛铃!
- 2007 年 1 月 30 日星期三 - 版本 1.2
- 添加了对使用适当系统字体的支持
- 在 Windows Vista 中测试
- 移植到 Visual Studio 2005 和 .NET 2.0
- 2007 年 2 月 26 日星期一 - 版本 1.2a
- 添加了 C# 版本,感谢 Scott Ferguson!