这是“使用
C# 开发智能手机软件:推箱子”系列文章的第十二篇。在这篇文章中,介绍 Window/AboutDlg.cs 源程序文件。
![](https://images.cnblogs.com/cnblogs_com/skyivben/About2.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PushBox-Std-About2.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PC-About2.png)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PushBox-About3.jpg)
以下是 Window/AboutDlg.Designer.cs 源程序的部分代码:
在“关于”对话框中,用一个 TabControl 控件来管理相关的选项卡页集。分为“版本号”和“系统”两个选项卡(TabPage 控件),每一个选项卡中使用 TextBox 控件来显示相关的信息。
AboutDlg 类(以及 Window 文件夹下的表示各种对话框的类)的构造函数有一个布尔型的參数 isTopMost。表示“菜单 -> 前端显示”是否选中,即是否总是显示在最前面。另外,AboutDlg 类还重载了基类的 OnResize 方法,当“关于”对话框窗体的尺寸改变时,调用 LoadSystemInfo 方法更新“系统”信息。用于在智能手机在“横屏”和“竖屏”之间切换时显示正确的“屏幕分辨率”。
另外,Smartphone 手机不支持 TabControl 控件,所以 Smartphone 版本号的推箱子程序的“关于”对话框直接在窗口上放一个 TextBox 控件显示信息。
这个源程序文件包括 AboutDlg 类,该类继承自 System.Windows.Forms.Form 类。表示推箱子的“关于”对话框。例如以下图所看到的:
![](https://images.cnblogs.com/cnblogs_com/skyivben/About1.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/About2.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PushBox-Std-About1.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PushBox-Std-About2.jpg)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PC-About2.png)
![](https://images.cnblogs.com/cnblogs_com/skyivben/PushBox-About3.jpg)
以下是 Window/AboutDlg.Designer.cs 源程序的部分代码:
namespace Skyiv.Ben.PushBox.Window
{
partial class AboutDlg
{
// 这里省略了一些代码![](https://www.cnblogs.com/Images/dot.gif)
private System.Windows.Forms.TabControl tclMain;
private System.Windows.Forms.TabPage tpgVersion;
private System.Windows.Forms.TabPage tpgSystem;
private System.Windows.Forms.TextBox tbxVersion;
private System.Windows.Forms.TextBox tbxSystem;
}
}
{
partial class AboutDlg
{
// 这里省略了一些代码
![](https://www.cnblogs.com/Images/dot.gif)
private System.Windows.Forms.TabControl tclMain;
private System.Windows.Forms.TabPage tpgVersion;
private System.Windows.Forms.TabPage tpgSystem;
private System.Windows.Forms.TextBox tbxVersion;
private System.Windows.Forms.TextBox tbxSystem;
}
}
在“关于”对话框中,用一个 TabControl 控件来管理相关的选项卡页集。分为“版本号”和“系统”两个选项卡(TabPage 控件),每一个选项卡中使用 TextBox 控件来显示相关的信息。
以下是 Window/AboutDlg.cs 源程序的代码:
1
using System;
2
using System.Windows.Forms;
3
using Skyiv.Ben.PushBox.Common;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
namespace Skyiv.Ben.PushBox.Window
6
{
7
/// <summary>
8
/// “关于”对话框
9
/// </summary>
10
public partial class AboutDlg : Form
11
{
12
public AboutDlg(bool isTopMost)
13
{
14
InitializeComponent();
15
TopMost = isTopMost;
16
}
17![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
protected override void OnLoad(EventArgs e)
19
{
20
base.OnLoad(e);
21
LoadVersionInfo();
22
LoadSystemInfo();
23
}
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
protected override void OnResize(EventArgs e)
26
{
27
base.OnResize(e);
28
LoadSystemInfo();
29
}
30![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
void LoadVersionInfo()
32
{
33
tbxVersion.Text = "skyiv (R) 推箱子" + Fcl.NewLine +
34
"版本号 " + Pub.GetVersionBuildString(Pub.Version) + Fcl.NewLine + Fcl.NewLine +
35
"(C) Skyiv Studio (ben)" + Fcl.NewLine +
36
"http://ben.skyiv.com" + Fcl.NewLine +
37
"skyivben@gmail.com" + Fcl.NewLine + Fcl.NewLine +
38
"推箱子是一款绿色软件。使用 C# 开发,基于 Microsoft .NET Compact Framework 2.0。" +
39
"执行环境为使用 Microsoft Windows Mobile 6.0 的智能手机,也能够在安装有 " +
40
"Microsoft .NET Framework 2.0 执行库的计算机上执行。";
41
}
42![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
void LoadSystemInfo()
44
{
45
tbxSystem.Text = "操作系统标识: " + Environment.OSVersion.Platform + Fcl.NewLine +
46
"操作系统版本号: " + Environment.OSVersion + Fcl.NewLine +
47
"公共语言执行库版本号: " + Environment.Version + Fcl.NewLine +
48
"屏幕分辨率: " + Pub.ToString(Screen.PrimaryScreen.Bounds.Size) + Fcl.NewLine +
49
"程序位置: " + Pub.CodeBases;
50
}
51
}
52
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
AboutDlg 类(以及 Window 文件夹下的表示各种对话框的类)的构造函数有一个布尔型的參数 isTopMost。表示“菜单 -> 前端显示”是否选中,即是否总是显示在最前面。另外,AboutDlg 类还重载了基类的 OnResize 方法,当“关于”对话框窗体的尺寸改变时,调用 LoadSystemInfo 方法更新“系统”信息。用于在智能手机在“横屏”和“竖屏”之间切换时显示正确的“屏幕分辨率”。
另外,Smartphone 手机不支持 TabControl 控件,所以 Smartphone 版本号的推箱子程序的“关于”对话框直接在窗口上放一个 TextBox 控件显示信息。