99
6 6 C# C# 第第 第第 Window Window s s 第第第第 第第第第

第 6 章 C# 开发 Windows 应用程序

  • Upload
    connor

  • View
    218

  • Download
    0

Embed Size (px)

DESCRIPTION

第 6 章 C# 开发 Windows 应用程序. 6.1 建立 Windows 应用程序. 我们将在本节先迅速建立一个 Windows 应用程序,从而学习一下建立 Windows 应用程序的基本步骤。 案例 :建立 Windows 应用程序 目标 :掌握建立 Windows 应用程序的基本步骤 步骤 :具体如下. 1 、启动 Visual Studio.NET ,如 6-1 所示。. 图 6-1 启动界面. 2 、单击 “ 新建项目 ” 按钮,打开 “ 新建项目 ” 对话框,界面如图 6-2 所示。. 图 6-2 “ 新建项目 ” 窗口. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 6 章  C# 开发 Windows 应用程序

第第 66 章 章 C#C# 开发开发 WindWindowsows 应用程序应用程序

Page 2: 第 6 章  C# 开发 Windows 应用程序

6.1 6.1 建立建立 WindowsWindows 应用程应用程序序

我们将在本节先迅速建立一个我们将在本节先迅速建立一个 WindowsWindows应用程序,从而学习一下建立应用程序,从而学习一下建立 WindowsWindows 应用程应用程序的基本步骤。序的基本步骤。案例案例:建立:建立 WindowsWindows 应用程序应用程序目标目标:掌握建立:掌握建立 WindowsWindows 应用程序的基本步骤应用程序的基本步骤步骤步骤:具体如下:具体如下

Page 3: 第 6 章  C# 开发 Windows 应用程序

11 、启动、启动 Visual Studio.NETVisual Studio.NET ,如,如 6-16-1 所所示。示。

图 6-1 启动界面

Page 4: 第 6 章  C# 开发 Windows 应用程序

22 、单击“新建项目”按钮,打开“新建项、单击“新建项目”按钮,打开“新建项目”对话框,界面如图目”对话框,界面如图 6-26-2 所示。所示。

图 6-2 “ 新建项目”窗口

Page 5: 第 6 章  C# 开发 Windows 应用程序

33 、打开、打开 VS.NETVS.NET 设计设计 Windows GUIWindows GUI 程序设程序设计的主界面,如图计的主界面,如图 6-36-3 所示。所示。

图 6-3 VS.NET 主窗口

Page 6: 第 6 章  C# 开发 Windows 应用程序

在在 VS.NETVS.NET 主界面中,主要包含五大部分:主界面中,主要包含五大部分:菜单栏菜单栏:包含“文件”、“编辑”、:包含“文件”、“编辑”、

“视图”、“项目”等十一个顶级菜单,其中“视图”、“项目”等十一个顶级菜单,其中每个顶级菜单又包含多级子菜单,通过上述菜每个顶级菜单又包含多级子菜单,通过上述菜单体系,我们就可以使用单体系,我们就可以使用 VS.NETVS.NET 提供的所有提供的所有功能。功能。

工具栏工具栏:工具栏主要体现的是菜单栏里:工具栏主要体现的是菜单栏里的常用操作,为了使用方便而以“图标”形式的常用操作,为了使用方便而以“图标”形式显示。显示。 VS.NETVS.NET 包括“标准”、“调试”等二包括“标准”、“调试”等二十多种工具栏,可由用户决定显示哪种工具栏。十多种工具栏,可由用户决定显示哪种工具栏。

工具箱工具箱:: C#C# 作为一门支持组件式开发的作为一门支持组件式开发的现代化编程语言,提供了功能强大、种类丰富现代化编程语言,提供了功能强大、种类丰富的组件箱,即工具箱,这极大地方便了程序员的组件箱,即工具箱,这极大地方便了程序员进行常规任务的软件开发工作。进行常规任务的软件开发工作。

Page 7: 第 6 章  C# 开发 Windows 应用程序

窗体设计器窗体设计器:作为窗口的主要载体,窗:作为窗口的主要载体,窗体是程序员进行体是程序员进行 WindowsWindows 窗口设计的主要窗口设计的主要容器,容器, VS.NETVS.NET 提供的窗体设计器允许程序提供的窗体设计器允许程序员“所见即所得”的设计软件界面,开发人员“所见即所得”的设计软件界面,开发人员可以方便地将各种控件以鼠标拖放的方式员可以方便地将各种控件以鼠标拖放的方式放入窗体中。放入窗体中。

属性窗口属性窗口:属性窗口是:属性窗口是 VS.NETVS.NET 提供的提供的众多工具性窗口中最重要的窗口之一,程序众多工具性窗口中最重要的窗口之一,程序员通过它可以方便地设置软件界面中各种组员通过它可以方便地设置软件界面中各种组件的属性值。图 件的属性值。图 6-4 VS.NET6-4 VS.NET 主窗口各部分主窗口各部分

上述几部分在上述几部分在 VS.NETVS.NET 中的分布情况见中的分布情况见图图 6-46-4 。。

Page 8: 第 6 章  C# 开发 Windows 应用程序

图 6-4 VS.NET 主窗口各部分

Page 9: 第 6 章  C# 开发 Windows 应用程序

44 、双击工具箱上的“、双击工具箱上的“ Button”Button” 控件,将它添加到窗体上,控件,将它添加到窗体上,并将它移动到窗体中央,然后通过属性窗口修改该按钮的并将它移动到窗体中央,然后通过属性窗口修改该按钮的TextText 属性为:“问候”。如图属性为:“问候”。如图 6-56-5 所示。 所示。

图 6-5 “ 问候”窗口

Page 10: 第 6 章  C# 开发 Windows 应用程序

55 、用鼠标双击“问候”按钮,打开代码设、用鼠标双击“问候”按钮,打开代码设计窗口,并写下一段代码。 计窗口,并写下一段代码。

图 6-6 “ 代码设计器”窗口

Page 11: 第 6 章  C# 开发 Windows 应用程序

66 、按、按 F5F5 编译并运行该程序,效果如图编译并运行该程序,效果如图 6-76-7 示。 示。

图 6-7 程序运行后的窗口

Page 12: 第 6 章  C# 开发 Windows 应用程序

77 、用鼠标单击“问候”按钮,将出现如图、用鼠标单击“问候”按钮,将出现如图 6-86-8 界面。 界面。

图 6-8 单击“问候”按钮后的界面

Page 13: 第 6 章  C# 开发 Windows 应用程序

6.2 6.2 使用使用 Windows FormsWindows Forms 控件控件

Windows GUIWindows GUI 软件的开发工作,在很软件的开发工作,在很大程度上要依赖各种控件来完成一些常规的大程度上要依赖各种控件来完成一些常规的功能,对于软件开发的初学者来说,要首先功能,对于软件开发的初学者来说,要首先掌握掌握 Windows FormsWindows Forms 的各种控件,下面我的各种控件,下面我们就开始学习们就开始学习 Windows GUIWindows GUI 软件设计的常软件设计的常用控件。 用控件。

Page 14: 第 6 章  C# 开发 Windows 应用程序

6.2.1 Button6.2.1 Button 控件控件

ButtonButton 控件是程序员在开发控件是程序员在开发 Windows GUIWindows GUI 程序时最程序时最常用的控件之一,它主要用来执行用户的单击功能,至于完常用的控件之一,它主要用来执行用户的单击功能,至于完成什么功能,那就完全由编写该程序的程序员决定了。成什么功能,那就完全由编写该程序的程序员决定了。

ButtonButton 控件最重要的属性是控件最重要的属性是 TextText 属性,最重要的事属性,最重要的事件是件是 ClickClick 事件,通常事件,通常 TextText 属性会直观地描述该属性会直观地描述该 ButtonButton 控控件的功能,而件的功能,而 ClickClick 事件的代码框架,程序员只需在事件的代码框架,程序员只需在 VS.NETVS.NET的设计状态,用鼠标双击窗体上的的设计状态,用鼠标双击窗体上的 ButtonButton 控件即可获得。控件即可获得。

案例案例:学习:学习 ButtonButton 控件的使用方法控件的使用方法目标目标:掌握:掌握 ButtonButton 控件的控件的 TextText 属性和属性和 ClickClick 事件的事件的

要领要领步骤步骤:具体如下:具体如下

Page 15: 第 6 章  C# 开发 Windows 应用程序

11 、启动、启动 VS.NETVS.NET ,建立名称为“,建立名称为“ ButtonTest”ButtonTest” 的解决方案,然后在窗体上添的解决方案,然后在窗体上添加加 ButtonButton 控件,并修改该控件的控件,并修改该控件的 TextText 属性为“属性为“ ButtonTest”ButtonTest” ,界面如图,界面如图6-96-9 所示。 所示。

图 6-9 ButtonTest 设计界面

Page 16: 第 6 章  C# 开发 Windows 应用程序

22 、在设计状态用鼠标双击“、在设计状态用鼠标双击“ ButtonTest”ButtonTest” 按钮,产生如下按钮,产生如下代码框架:代码框架:

private void button1_Click(object sender, System.Eprivate void button1_Click(object sender, System.EventArgs e)ventArgs e)

{{//// 程序员编写的响应代码就放在此处程序员编写的响应代码就放在此处

}}上述代码框架即为按钮上述代码框架即为按钮 button1button1 的鼠标单击事件的鼠标单击事件 ClickClick 的响的响应代码框架,为了响应该按钮的鼠标单击事件,我们只需把应代码框架,为了响应该按钮的鼠标单击事件,我们只需把有关代码放在上述框架中即可。有关代码放在上述框架中即可。33 、添写如下一段响应代码:、添写如下一段响应代码:

private void button1_Click(object sender, System.Eprivate void button1_Click(object sender, System.EventArgs e)ventArgs e)

{{MessageBox.Show("MessageBox.Show(" 努力学习努力学习 C#C# !! ");"); }}

Page 17: 第 6 章  C# 开发 Windows 应用程序

44 、按、按 F5F5 编译并运行编译并运行 ButtonTestButtonTest 解决方案,程序运行后,解决方案,程序运行后,按下按下 ButtonTestButtonTest 按钮,将会出现如图按钮,将会出现如图 6-106-10 所示的界面。 所示的界面。

图 6-10 ButtonTest 运行界面

Page 18: 第 6 章  C# 开发 Windows 应用程序

6.2.2 Label6.2.2 Label 控件控件

LabelLabel 控件主要用来在软件界面上显示一段控件主要用来在软件界面上显示一段静态信息,这段静态信息经常是说明性或提示性静态信息,这段静态信息经常是说明性或提示性的文字,也可用来显示不用更改,只需刷新的信的文字,也可用来显示不用更改,只需刷新的信息,比如当前系统的日期和时间等内容。息,比如当前系统的日期和时间等内容。

关于关于 LabelLabel 控件的常用属性及说明见表控件的常用属性及说明见表 6-16-1 。。

Page 19: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值

Name 控件名称 lblName

AutoSize如果为 True,控件大小将根据内容自动调整;如果为

False,则由用户决定其大小 True

BackColor 控件背景色 Control

ForeColor控件前景色

ControlText

Location 控件的位置坐标 x,y 16,16

Size 控件的大小 width,height 180,20

Text 控件的内容 姓名

Visible如果为 True,控件可见;如果为 False,则控件不可见 True

表 6-1 Label 控件的常用属性

Page 20: 第 6 章  C# 开发 Windows 应用程序

案例案例:练习使用:练习使用LabelLabel 控件控件目标目标:掌握:掌握LabelLabel 控件常用属性的使用方法控件常用属性的使用方法步骤步骤::11 、启动、启动 VS.NETVS.NET ,建立名称为“,建立名称为“LabelTest”LabelTest” 的解决方案,在窗体上添加的解决方案,在窗体上添加LabelLabel 控件和控件和ButtonButton 控件,并将上述控件的有关属性按表控件,并将上述控件的有关属性按表6-26-2 所示设置,设所示设置,设置后的界面如图置后的界面如图 6-116-11 所示。 所示。

图 6-11 LabelTest 设计界面

Page 21: 第 6 章  C# 开发 Windows 应用程序

表 6-2 LabelTest 方案的有关控件属性设置

控件类型 属性名 设置值

Label

Name lblTime

AutoSize False

BackColor Desktop

ForeColor ActiveCaptionText

Location 16,24

Size 232,24

Text (空)

Visible True

ButtonName butGetTime

Text 获得当前系统时间

Page 22: 第 6 章  C# 开发 Windows 应用程序

22 、双击按钮,添加如下代码:、双击按钮,添加如下代码:private void butGetTime_Clickprivate void butGetTime_Click(object sender, System.EventArgs e)(object sender, System.EventArgs e)

{{this.lblTime.Text=this.lblTime.Text=

System.DateTime.Now.ToString();System.DateTime.Now.ToString();}}

Page 23: 第 6 章  C# 开发 Windows 应用程序

33 、单击、单击 F5F5 编译并运行编译并运行 LabelTestLabelTest ,再单击“获得,再单击“获得当前系统时间”按钮,如图当前系统时间”按钮,如图 6-126-12 所示界面。所示界面。

图 6-12 LabelTest 运行界面

Page 24: 第 6 章  C# 开发 Windows 应用程序

6.2.3 LinkLabel6.2.3 LinkLabel 控件控件

LinkLabelLinkLabel 控件非常类似网页上的超控件非常类似网页上的超级链接,它有很多属性类似于级链接,它有很多属性类似于 LabelLabel 控件,控件,可以显示静态信息,但是我们要把注意力可以显示静态信息,但是我们要把注意力放在放在 LinkLabelLinkLabel 控件的控件的 LinkLink 功能上,也就功能上,也就是说,当用户用鼠标单击该控件时,它将是说,当用户用鼠标单击该控件时,它将产生一个事件,程序员写的响应代码就写产生一个事件,程序员写的响应代码就写在该事件里,该事件的名称是在该事件里,该事件的名称是 LinkClickedLinkClicked 。。

Page 25: 第 6 章  C# 开发 Windows 应用程序

案例案例:练习使用:练习使用 LinkLabelLinkLabel 控件控件目标目标:掌握:掌握 LabelLabel 控件的控件的 LinkClickedLinkClicked 事件的使事件的使用方法用方法步骤步骤::

11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ LinkLabelTLinkLabelTest”est” 的解决方案,在窗体上添加的解决方案,在窗体上添加 LinkLabelLinkLabel 控件,控件,并将上述控件的有关属性按表并将上述控件的有关属性按表 6-36-3 所示设置,其所示设置,其它属性不变,设置后的界面如图它属性不变,设置后的界面如图 6-136-13 所示。所示。

Page 26: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

LinkLabelName lnkSina

Text 新浪网

表 6-3 LinkLabelTest 方案有关控件的属性设置

图 6-13 LinkLabelTest 设计界面

Page 27: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击、用鼠标双击 LinkLabelLinkLabel 控件,控件, VS.NETVS.NET 将自动生将自动生成关于成关于 LinkClickedLinkClicked 事件的代码框架,我们只需把有事件的代码框架,我们只需把有关代码写在该框架内,当程序运行时,用户只要用鼠关代码写在该框架内,当程序运行时,用户只要用鼠标单击该标单击该 LinkLabelLinkLabel 控件,我们写的代码块就会自动控件,我们写的代码块就会自动运行。运行。具体代码样例如下:具体代码样例如下:private void lnkSina_LinkClickedprivate void lnkSina_LinkClicked(object sender, System.Windows.Forms.LinkLab(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)elLinkClickedEventArgs e){{

MessageBox.Show("MessageBox.Show(" 您准备访问新浪网!您准备访问新浪网! ");");}}

Page 28: 第 6 章  C# 开发 Windows 应用程序

33 、按、按 F5F5 编译并运行本程序后,再用鼠标单击“新编译并运行本程序后,再用鼠标单击“新浪网”后,将显示如图浪网”后,将显示如图 6-146-14 所示的界面。所示的界面。

图 6-14 LinkLabelTest 运行界面

Page 29: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值

CharacterCasing 指示所有字符应保持不变还是应转换为大写或小写 Normal

Lines TextBox中的文本行,作为字符串值的数组MaxLength 指定 TextBox中可输入的最大字符数 32767

Multiline 指定 TextBox是否可以跨越多行 True

ReadOnly 控制能否更改 TextBox的文本 True

ScrollBars 指示 TextBox显示哪些滚动条 None

WordWrap 指示 TextBox是否自动换行 True

6.2.4 TextBox6.2.4 TextBox 控件控件TextBoxTextBox 控件的主要功能是为运行的程序提控件的主要功能是为运行的程序提

供输入数据,用户可以通过它输入各种字符数据,供输入数据,用户可以通过它输入各种字符数据,程序在接收到数据后再进行相关处理。程序在接收到数据后再进行相关处理。

TextBoxTextBox 控件的常用属性见表控件的常用属性见表 6-46-4 。 。 表 6-4 TextBox 控件的常用属性

Page 30: 第 6 章  C# 开发 Windows 应用程序

案例:练习案例:练习 TextBoxTextBox 控件在输入数据方面的作用控件在输入数据方面的作用目标:掌握如何通过目标:掌握如何通过 TextBoxTextBox 输入程序要的数据输入程序要的数据步骤:步骤:

11 、启动、启动 VS.NETVS.NET ,建立名称为“,建立名称为“ TextBoxTTextBoxTest”est” 的解决方案,该方案拟实现对两个数据的求的解决方案,该方案拟实现对两个数据的求和运算。这需要在窗体上添加两个和运算。这需要在窗体上添加两个 TextBoxTextBox 来输来输入整数数据,再添加一个入整数数据,再添加一个 ButtonButton 来完成求和运算,来完成求和运算,结果放在一个结果放在一个 LabelLabel 里。由于里。由于 TextBoxTextBox 控件接收控件接收的数据按文本处理,所以如果想进行算术运算,必的数据按文本处理,所以如果想进行算术运算,必须写代码将接收来的文本数据转换成数值型数据,须写代码将接收来的文本数据转换成数值型数据,

控件的属性设置如表控件的属性设置如表 6-56-5 所示,如图所示,如图 6-156-15 所所示。示。

Page 31: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

TextBoxName txtNum1

Text (空 )

TextBoxName txtNum2

Text (空 )

Label

Name lblResult

BorderStyle FixedSingle

Text (空 )

ButtonName butSum

Text 求和

表 6-5 TextBoxTest 方案有关控件的属性设置

Page 32: 第 6 章  C# 开发 Windows 应用程序

图 6-15 TextBoxTest 设计界面

22 、双击“求和”按钮,进入、双击“求和”按钮,进入 ButtonButton 控件的控件的 ClickClick 事件代码事件代码框架,添加如下代码段:框架,添加如下代码段:

private void butSum_Click(object sender, Systprivate void butSum_Click(object sender, System.EventArgs e)em.EventArgs e){ int ret=int.Parse(this.txtNum1.Text)+{ int ret=int.Parse(this.txtNum1.Text)+

int.Parse(this.txtNum2.Text);int.Parse(this.txtNum2.Text);this.lblResult.Text=ret.ToString();this.lblResult.Text=ret.ToString(); }}

Page 33: 第 6 章  C# 开发 Windows 应用程序

33 、按下、按下 F5F5 编译并运行编译并运行 TextBoxTestTextBoxTest 方案,在两个方案,在两个 TextBoxTextBox 控件里控件里输入整数再单击“求和”按钮,程序运行结果如图输入整数再单击“求和”按钮,程序运行结果如图 6-166-16 所示。所示。

图 6-16 TextBoxText 运行界面

Page 34: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值AutoCheck 使 CheckBox在单击时自动更改状态 True

Checked 指示 CheckBox是已经选中还是未选中 True

CheckState 指示 CheckBox的复选状态 Unchecked

ThreeState 控制用户是否可以选择 CheckBox的不确定状态 False

6.2.5 CheckBox6.2.5 CheckBox 控件控件CheckBoxCheckBox 控件主要用在用户进行多项选择控件主要用在用户进行多项选择

的场合,如果用户选中该控件,则它处于打√状的场合,如果用户选中该控件,则它处于打√状态,再单击一次,它的状态就切换到未选中状态。态,再单击一次,它的状态就切换到未选中状态。

CheckBoxCheckBox 控件的常用属性如表控件的常用属性如表 6-66-6 所示。所示。

表 6-6 CheckBox 控件的常用属性

Page 35: 第 6 章  C# 开发 Windows 应用程序

案例:练习案例:练习 CheckBoxCheckBox 控件的使用方法控件的使用方法目标:掌握通过目标:掌握通过 CheckBoxCheckBox 进行多项选择编程的技巧进行多项选择编程的技巧步骤:步骤:

11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ TextBoxTest”TextBoxTest”的解决方案,属性设置参见表的解决方案,属性设置参见表 6-76-7 ,界面如图,界面如图 6-176-17 。。

图 6-17 CheckBoxTest 设计界面

Page 36: 第 6 章  C# 开发 Windows 应用程序

表 6-7 CheckBoxTest 方案有关控件的属性设置

控件类型 属性名 设置值

LabelName lblTip

Text 请选择你的爱好:

CheckBoxName chkBooks

Text 看书

CheckBoxName chkWeb

Text 上网

CheckBoxName chkGame

Text 玩游戏

CheckBoxName chkStreet

Text 逛街

CheckBoxName chkShopping

Text 购物

LabelName lblFavor

Text (空 )

ButtonName butShowFavor

Text 显示你的爱好

Page 37: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击“显示你的爱好”按钮,产生、用鼠标双击“显示你的爱好”按钮,产生 ClickClick 事件代码事件代码框架,编写如下代码:框架,编写如下代码:private void butShowFavor_Click(object sender, Systeprivate void butShowFavor_Click(object sender, System.EventArgs e)m.EventArgs e){{

string str="string str=" 你的爱好:你的爱好: ";";if(this.chkBooks.Checked)if(this.chkBooks.Checked)

str+=" str+=" 看书看书 ";";if(this.chkWeb.Checked)if(this.chkWeb.Checked)

str+=" str+=" 上网上网 ";";if(this.chkGame.Checked)if(this.chkGame.Checked)

str+=" str+=" 玩游戏玩游戏 ";";if(this.chkStreet.Checked)if(this.chkStreet.Checked)

str+=" str+=" 逛街逛街 ";";if(this.chkShopping.Checked)if(this.chkShopping.Checked)

str+=" str+=" 购物购物 ";";this.lblFavor.Text=str;this.lblFavor.Text=str;

}}

图 6-16 TextBoxText 运行界面

Page 38: 第 6 章  C# 开发 Windows 应用程序

33 、按、按 F5F5 编译并运行编译并运行 CheckBoxTestCheckBoxTest 方案,先方案,先选择自己的爱好,再单击按钮,产生如图选择自己的爱好,再单击按钮,产生如图 6-16-188 所示的界面:所示的界面:

图 6-18 CheckBoxTest 运行界面

Page 39: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值

AutoCheck 使 RadioButton在单击时自动更改状态 True

Checked 指示 RadioButton是已经选中 True

6.2.6 RadioButton6.2.6 RadioButton 控件控件RadioButtonRadioButton 控件主要用在用户进行单控件主要用在用户进行单

项选择的场合,如果用户选中某项选择,则其项选择的场合,如果用户选中某项选择,则其它选项将自动处于未选中状态。它选项将自动处于未选中状态。 RadioButtonRadioButton控件的常用属性如表控件的常用属性如表 6-86-8 所示。所示。

表 6-8 RadioButton 控件的常用属性

Page 40: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

LabelName lblSex

Text 性别:

RadioButtonName rbMale

Text 男

RadioButtonName rbFemale

Text 女

ButtonName butSex

Text 你的性别

表 6-9 RadioButtonTest 方案有关控件的属性设置

案例:练习案例:练习 RadioButtonRadioButton 控件的使用方法控件的使用方法目标:掌握目标:掌握 RadioButtonRadioButton 单项选择编程的基本技巧单项选择编程的基本技巧步骤:步骤:11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ RadioButtonTest”RadioButtonTest” 的的解决方案,属性设置参见表解决方案,属性设置参见表 6-96-9 。。

Page 41: 第 6 章  C# 开发 Windows 应用程序

按照表按照表 6-96-9 设置完属性后,具体界面如图设置完属性后,具体界面如图 6-196-19 所示。所示。

图 6-19 RadioButtonTest 设计界面

Page 42: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击“你的性别”按钮,产生、用鼠标双击“你的性别”按钮,产生 ClicClickk 事件代码框架,编写如下代码:事件代码框架,编写如下代码:private void butSex_Click(object sender, private void butSex_Click(object sender, System.EventArgs e)System.EventArgs e){{

string str="string str=" 你的性别是:你的性别是: ";";if(this.rbMale.Checked)if(this.rbMale.Checked)

str+="str+=" 男男 ";";if(this.rbFemale.Checked)if(this.rbFemale.Checked)

str+="str+=" 女女 ";";MessageBox.Show(str);MessageBox.Show(str);

}}

Page 43: 第 6 章  C# 开发 Windows 应用程序

33 、按、按 F5F5 编译并运行编译并运行 RadioButtonTestRadioButtonTest 方案,方案,单击单击 RadioButtonRadioButton 进行性别选择,并单击按进行性别选择,并单击按钮,界面如图钮,界面如图 6-206-20 所示。所示。

图 6-20 RadioButtonTest 运行界面

Page 44: 第 6 章  C# 开发 Windows 应用程序

6.2.7 GroupBox6.2.7 GroupBox 控件控件GroupBoxGroupBox 控件在软件界面设计中的作用很重要,它是一个容控件在软件界面设计中的作用很重要,它是一个容

器控件,可以容纳其它控件,在软件界面设计布局中主要有两大功器控件,可以容纳其它控件,在软件界面设计布局中主要有两大功能:一是分组功能,它可以把完成同一功能的多个控件组合在一起;能:一是分组功能,它可以把完成同一功能的多个控件组合在一起;二是装饰功能,如果软件界面上的控件很多,通过若干个二是装饰功能,如果软件界面上的控件很多,通过若干个 GroupBoGroupBoxx 控件的分组,整个界面就会显得整洁有序、条理清楚。控件的分组,整个界面就会显得整洁有序、条理清楚。

Page 45: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

GroupBoxName groupBox1

Text 个人爱好

CheckBoxName chkBooks

Text 看书

CheckBoxName chkGame

Text 玩游戏

CheckBoxName chkStreet

Text 逛街

CheckBoxName chkWeb

Text 上网

表 6-11 GroupBoxTest 方案有关控件的属性设置

案例:练习案例:练习 GroupBoxGroupBox 控件的使用方法控件的使用方法目标:掌握通过目标:掌握通过 GroupBoxGroupBox 控件进行控件分组技巧控件进行控件分组技巧步骤:步骤:11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ GroupBoxTest”GroupBoxTest” 的解决方案,控件具的解决方案,控件具体属性设置如表体属性设置如表 6-116-11 所示。所示。

Page 46: 第 6 章  C# 开发 Windows 应用程序

22 、按表、按表 6-116-11 设置完设置完 GroupBoxTestGroupBoxTest 方案的属性,界面如方案的属性,界面如图图 6-216-21 所示,由于所示,由于 GroupBoxGroupBox 控件无需编码,只需在控件无需编码,只需在 VS.VS.NETNET 设计状态用鼠标进行拖放操作即可,所以本案例不再设计状态用鼠标进行拖放操作即可,所以本案例不再演示运行状态。演示运行状态。

图 6-21 GroupBoxTest 设计界面

Page 47: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值

DropDownStyle 控制 ComboBox的外观和功能 DropDown

Items ComboBox中的项,它是个字符串集合

Sorted 控制是否对列表部分中的项进行排序 False

表 6-12 ComboBox 控件的常用属性

6.2.8 ComboBox6.2.8 ComboBox 控件控件ComboBoxComboBox 控件在功能上既有文本框的数据输入功控件在功能上既有文本框的数据输入功

能,又有列表框的条目选择功能,从软件界面设计的角度能,又有列表框的条目选择功能,从软件界面设计的角度来讲,来讲, ComboBoxComboBox 控件能满足用户从多个条目选择的要控件能满足用户从多个条目选择的要求,而且还节省界面空间。求,而且还节省界面空间。 ComboBoxComboBox 控件的常用属性控件的常用属性如表如表 6-126-12 所示。所示。

Page 48: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

ComboBoxName cmbCities

Text (空 )

Label

Name lblChoice

Text (空 )

BorderStyle FixedSingle

表 6-13 ComboBoxTest 方案有关控件的属性设置

案例:练习案例:练习 ComboBoxComboBox 控件的使用方法控件的使用方法目标:掌握通过目标:掌握通过 ComboBoxComboBox 编程的基本技巧编程的基本技巧步骤:步骤:11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ ComboBoxTest”ComboBoxTest” 的解决方案,属性设置参见表的解决方案,属性设置参见表 6-136-13 。。

Page 49: 第 6 章  C# 开发 Windows 应用程序

22 、选中、选中 ComboBoxComboBox 控件,按下控件,按下 F4F4 ,打开属性窗口,选,打开属性窗口,选择择 itemsitems 属性,用鼠标单击右侧窗口,打开字符串集合属性,用鼠标单击右侧窗口,打开字符串集合编辑器,输入各直辖市名称,界面如图编辑器,输入各直辖市名称,界面如图 6-226-22 所示。所示。

图 6-22 字符串集合编辑器界面

Page 50: 第 6 章  C# 开发 Windows 应用程序

33 、双击、双击 ComboBoxComboBox 控件,创建控件,创建 SelectedIndSelectedIndexChangedexChanged 事件的代码框架,该代码框架在用事件的代码框架,该代码框架在用户选择不同的条目时将自动触发,编写如下代户选择不同的条目时将自动触发,编写如下代码:码:private void cmbCities_SelectedIndexChaprivate void cmbCities_SelectedIndexChangednged

(object sender, System.EventArgs e)(object sender, System.EventArgs e){{

this.lblChoice.Text=this.lblChoice.Text=this.cmbCities.Text;this.cmbCities.Text;

}}

Page 51: 第 6 章  C# 开发 Windows 应用程序

44 、按、按 F5F5 编译并运行程序,当用户选择不同的编译并运行程序,当用户选择不同的直辖市时,下面的直辖市时,下面的 LabelLabel 控件将自动反映用控件将自动反映用户的选择,界面如图户的选择,界面如图 6-236-23 所示。所示。

图 6-23 ComboBoxTest 方案运行界面

Page 52: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值Items 列表框中的项

ScrollAlwaysVisible

指示列表框中是否显示滚动条 True

SelectionMode 指示列表框是单项选择、多项选择还是不可选择 One

表 6-14 ListBox 控件的常用属性

6.2.9 ListBox6.2.9 ListBox 控件控件ListBoxListBox 控件主要用在枚举多个条目的场合。控件主要用在枚举多个条目的场合。

同同 ComboBoxComboBox 控件相比,它占用的界面空间比较控件相比,它占用的界面空间比较大,但是所容纳的内容一目了然,在界面空间不大,但是所容纳的内容一目了然,在界面空间不紧张的情况下适合采用。紧张的情况下适合采用。

ListBoxListBox 控件的常用属性如表控件的常用属性如表 6-146-14 所示。所示。

Page 53: 第 6 章  C# 开发 Windows 应用程序

表 6-15 ListBoxTest 方案有关控件的属性设置

控件类型 属性名 设置值

ListBoxName lbFonts

Items (空 )

Label

Name lblFonts

Text 字体列表 :

AutoSize True

案例案例:练习:练习 ListBoxListBox 控件的使用方法控件的使用方法目标目标:掌握通过:掌握通过 ListBoxListBox 控件编程的基本技巧控件编程的基本技巧步骤步骤::

11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ ListBoxTest”ListBoxTest” 的解的解决方案,在本方案中,拟通过列表框显示系统字体列表。决方案,在本方案中,拟通过列表框显示系统字体列表。

ListBoxTestListBoxTest 方案的界面各控件属性设置见表方案的界面各控件属性设置见表 6-156-15所示。 所示。

Page 54: 第 6 章  C# 开发 Windows 应用程序

按表按表 6-156-15 设置完有关控件属性后,界面如图设置完有关控件属性后,界面如图6-246-24 所示。所示。

图 6-24 ListBoxTest 方案设计界面

Page 55: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击窗体,打开窗体的、用鼠标双击窗体,打开窗体的 LoadLoad 事件,当窗体启动时,事件,当窗体启动时,LoadLoad 事件将自动调用,当事件将自动调用,当 LoadLoad 事件里的代码运行完毕后,窗事件里的代码运行完毕后,窗体才可见。体才可见。

在在 LoadLoad 事件里编写如下代码:事件里编写如下代码:private void Form1_Load(object sender, private void Form1_Load(object sender,

System.EventArgs e)System.EventArgs e){{

Graphics g=this.CreateGraphics();Graphics g=this.CreateGraphics();FontFamily[] ff=FontFamily.GetFamilies(g);FontFamily[] ff=FontFamily.GetFamilies(g);for(int i=0;i<ff.Length;i++)for(int i=0;i<ff.Length;i++){{

this.lbFonts.Items.Add(ff[i].Name);this.lbFonts.Items.Add(ff[i].Name);}}

}}

Page 56: 第 6 章  C# 开发 Windows 应用程序

33 、按、按 F5F5 编译并运行编译并运行 ListBoxTestListBoxTest 方案,运方案,运行界面如图行界面如图 6-256-25 所示。所示。

图 6-25 ListBoxTest 方案运行界面

Page 57: 第 6 章  C# 开发 Windows 应用程序

属性名 含 义 样例值Panels StatusBar中的面板,它是一个集合属性

ShowPanels 确定 StatusBar是显示面板,还是显示单行文本 True

表 6-16 StatusBar 控件的常用属性

6.2.10 StatusBar6.2.10 StatusBar 控件控件StatusBarStatusBar 控件在控件在 Windows GUIWindows GUI 程序设计程序设计

中使用的非常普遍,它的主要用途是反馈程序的中使用的非常普遍,它的主要用途是反馈程序的运行状态信息,也经常用来为用户提供使用软件运行状态信息,也经常用来为用户提供使用软件的提示性信息。的提示性信息。

StatusBarStatusBar 控件的常用属性如表控件的常用属性如表 6-166-16 所示。所示。

Page 58: 第 6 章  C# 开发 Windows 应用程序

案例案例:练习:练习 StatusBarStatusBar 控件的使用方法控件的使用方法目标目标:掌握通过:掌握通过 StatusBarStatusBar 控件编程的基本技巧控件编程的基本技巧步骤步骤::

11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ StatusBarTStatusBarTest”est” 的解决方案,在本方案中,拟通过的解决方案,在本方案中,拟通过 StatusBStatusBarar 来显示当前的系统日期和时间。来显示当前的系统日期和时间。

22 、用鼠标双击工具箱里的、用鼠标双击工具箱里的 StatusBarStatusBar 控件,控件,将它添加到窗体上,然后按将它添加到窗体上,然后按 F4F4 打开属性窗口,确打开属性窗口,确保选中保选中 StatusBarStatusBar 控件的控件的 PanelsPanels 属性,接着用鼠属性,接着用鼠标单击右侧按钮,打开标单击右侧按钮,打开 StatusBarPanelStatusBarPanel 集合编集合编辑器,我们要为辑器,我们要为 StatusBarStatusBar 控件添加两个面板,控件添加两个面板,它们的属性如表它们的属性如表 6-176-17 所示。 所示。

Page 59: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

StatusBarPanel

Name sbpDate

Alignment Center

Text (空 )

StatusBarPanel

Name sbpTime

Alignment Center

Text (空 )

表 6-17 StatusBarTest 方案有关控件的属性设置

Page 60: 第 6 章  C# 开发 Windows 应用程序

按表按表 6-176-17 设置完有关控件属性后,集合编辑设置完有关控件属性后,集合编辑器的界面如图器的界面如图 6-266-26 所示。所示。

图 6-26 StatusBarPanel 集合编辑器

Page 61: 第 6 章  C# 开发 Windows 应用程序

利用集合编辑器编辑完利用集合编辑器编辑完 StatusBarStatusBar 控件的面板集合后,控件的面板集合后,按下“确定”按钮,按下“确定”按钮, StatusBarTestStatusBarTest 方案的设计界面方案的设计界面如图如图 6-276-27 所示。所示。

图 6-27 StatusBarTest 方案设计界面

Page 62: 第 6 章  C# 开发 Windows 应用程序

33 、用鼠标双击窗体,打开、用鼠标双击窗体,打开 LoadLoad 事件的代码框事件的代码框架,并编写如下代码:架,并编写如下代码:

private void Form1_Load(object sendeprivate void Form1_Load(object sender, System.EventArgs e)r, System.EventArgs e){{

sbpDate.Text=System.DateTime.sbpDate.Text=System.DateTime.Now.ToLongDateString();Now.ToLongDateString();

sbpTime.Text=System.DateTime.sbpTime.Text=System.DateTime.Now.ToLongTimeString();Now.ToLongTimeString();

}}

Page 63: 第 6 章  C# 开发 Windows 应用程序

44 、按、按 F5F5 编译并运行编译并运行 StatusBarTestStatusBarTest 方案,方案,该方案的运行界面如图该方案的运行界面如图 6-286-28 所示。所示。

图 6-28 StatusBarTest 方案运行界面

Page 64: 第 6 章  C# 开发 Windows 应用程序

控件类型 属性名 设置值

LabelName lblCurrentTime

Text (空 )

Timer Enabled True

表 6-18 StatusBarTest 方案修改后有关控件的属性设置

在上述案例中,显示时间的代码可以加以改在上述案例中,显示时间的代码可以加以改进,使之每秒都能更新当前的系统时间。针对上进,使之每秒都能更新当前的系统时间。针对上述案例作如下修改:述案例作如下修改:

11 、在窗体上添加一个、在窗体上添加一个 TimerTimer 控件和一个控件和一个 LLabelabel 控件,属性设置如表控件,属性设置如表 6-186-18 所示。所示。

Page 65: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击、用鼠标双击 TimerTimer 控件,产生控件,产生 TickTick 事件的事件的代码框架,在该框架内编写如下代码:代码框架,在该框架内编写如下代码:

private void timer1_Tick(object sendeprivate void timer1_Tick(object sender, System.EventArgs e)r, System.EventArgs e){{

lblCurrentTime.Text=System.lblCurrentTime.Text=System.DateTime.Now.ToLongTimeString();DateTime.Now.ToLongTimeString();

}}

Page 66: 第 6 章  C# 开发 Windows 应用程序

33 、按、按 F5F5 编译并运行程序,界面如图编译并运行程序,界面如图 6-296-29 所所示。示。

图 6-29 StatusBarTest 方案运行界面 2

Page 67: 第 6 章  C# 开发 Windows 应用程序

6.3 6.3 使用菜单使用菜单

菜单是菜单是 Windows GUIWindows GUI 软件界面中最重软件界面中最重要的元素之一,软件的所有功能都可以通过要的元素之一,软件的所有功能都可以通过菜单来使用,菜单主要分两种,主菜单和上菜单来使用,菜单主要分两种,主菜单和上下文菜单。下面对这两种菜单进行介绍。下文菜单。下面对这两种菜单进行介绍。

Page 68: 第 6 章  C# 开发 Windows 应用程序

6.3.1 6.3.1 创建主菜单创建主菜单主菜单就是通常所说的下拉菜单,它部署在窗口的主菜单就是通常所说的下拉菜单,它部署在窗口的

顶部,构成界面的顶级菜单体系,每个顶级菜单条又包含顶部,构成界面的顶级菜单体系,每个顶级菜单条又包含多级子菜单。多级子菜单。

在在 VS.NETVS.NET 开发环境中,主菜单的设计采用组件的开发环境中,主菜单的设计采用组件的方式,即向窗体添加一个主菜单设计控件,然后通过该控方式,即向窗体添加一个主菜单设计控件,然后通过该控件提供的菜单设计器来完成主菜单的设计。件提供的菜单设计器来完成主菜单的设计。

案例案例:练习:练习 MainMenuMainMenu 控件的使用方法控件的使用方法目标目标:掌握通过:掌握通过 MainMenuMainMenu 控件设计主菜单的编程控件设计主菜单的编程

技巧技巧步骤步骤::11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ MainMenuTest”MainMenuTest”

的解决方案,在本方案中,拟设计一套在很多软件中都常的解决方案,在本方案中,拟设计一套在很多软件中都常用的菜单体系。 用的菜单体系。

Page 69: 第 6 章  C# 开发 Windows 应用程序

22 、用鼠标双击工具箱里的、用鼠标双击工具箱里的 MainMenuMainMenu 控件,控件,将它添加到窗体上,界面如图将它添加到窗体上,界面如图 6-306-30 所示。所示。

图 6-30 MainMenuTest 菜单设计界面( 一 )

Page 70: 第 6 章  C# 开发 Windows 应用程序

33 、用鼠标单击“请在此处输入”的蓝色区域,、用鼠标单击“请在此处输入”的蓝色区域,则将出现如图则将出现如图 6-316-31 所示的菜单设计界面。所示的菜单设计界面。

图 6-31 MainMenuTest 菜单设计界面( 二 )

Page 71: 第 6 章  C# 开发 Windows 应用程序

控件类型 菜单 Name属性 菜单 Ttex属性

MenuItem

mnuFile 文件 (&F)

mnuNew 新建 (&N)

mnuOpen 打开 (&O)…

mnuSep1 -

mnuExit 退出 (&X)

MenuItem

mnuEdit 编辑 (&E)

mnuCut 剪切 (&T)

mnuCopy 复制 (&C)

mnuPaste 粘贴 (&P)

44 、设计一个菜单体系,各级菜单名称和内容、设计一个菜单体系,各级菜单名称和内容如表如表 6-196-19 所示。所示。

表 6-19 MainMenuTest 方案中菜单条属性设置

Page 72: 第 6 章  C# 开发 Windows 应用程序

55 、按照表、按照表 6-196-19 所示设置完属性后,通过属性窗口设置所示设置完属性后,通过属性窗口设置窗体窗体 Form1Form1 的的 MenuMenu 属性为属性为 mainMenu1mainMenu1 ,程序运行,程序运行后的菜单界面如图后的菜单界面如图 6-326-32 所示。所示。

图 6-32 MainMenuTest 方案运行界面

Page 73: 第 6 章  C# 开发 Windows 应用程序

6.3.2 6.3.2 创建上下文菜单创建上下文菜单上下文菜单也称为快捷菜单,通常是由用户上下文菜单也称为快捷菜单,通常是由用户

用鼠标右键单击弹出,所以也称右键菜单。用鼠标右键单击弹出,所以也称右键菜单。案例案例:练习:练习 ContextMenuContextMenu 控件的使用方法控件的使用方法目标目标:掌握通过:掌握通过 ContextMenuContextMenu 控件设计上下控件设计上下

文菜单的技巧文菜单的技巧步骤步骤::11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ ContextMenContextMen

uTest”uTest” 的解决方案,在本方案中,拟设计一个右的解决方案,在本方案中,拟设计一个右键菜单。键菜单。

Page 74: 第 6 章  C# 开发 Windows 应用程序

控件类型 菜单 Name属性 菜单 Ttex属性

MenuItem

mnuCut 剪切 (&T)

mnuCopy 复制 (&C)

mnuPaste 粘贴 (&P)

表 6-20 ContextMenuTest 方案中菜单条属性设置

22 、通过工具箱向窗体添加、通过工具箱向窗体添加 ContextMenuContextMenu 控控件,并确保窗体的件,并确保窗体的 ContextMenuContextMenu 属性设置属性设置为刚才添加的为刚才添加的 ContextMenuContextMenu 控件的名字控件的名字 ccontextMenu1ontextMenu1 。。

33 、设计上下文菜单的条目如表、设计上下文菜单的条目如表 6-206-20 所示。所示。

Page 75: 第 6 章  C# 开发 Windows 应用程序

44 、按照表、按照表 6-206-20 设置完菜单属性后,程序的设设置完菜单属性后,程序的设计界面如图计界面如图 6-336-33 所示。所示。

图 6-33 ContextMenuTest 设计界面

Page 76: 第 6 章  C# 开发 Windows 应用程序

55 、按、按 F5F5 编译并运行程序,然后右键单击窗体,编译并运行程序,然后右键单击窗体,界面如图界面如图 6-346-34 所示。所示。

图 6-34 ContextMenuTest 运行界面

Page 77: 第 6 章  C# 开发 Windows 应用程序

6.4 6.4 对话框对话框

对话框是对话框是 Windows GUIWindows GUI 程序中常用的程序中常用的一种窗口,它是软件同用户进行交流的重要一种窗口,它是软件同用户进行交流的重要渠道。下面我们重点讲解模态对话框和非模渠道。下面我们重点讲解模态对话框和非模态对话框。态对话框。

Page 78: 第 6 章  C# 开发 Windows 应用程序

6.4.1 6.4.1 模态和非模态对话框模态和非模态对话框模态对话框与非模态对话框的区别,不在于模态对话框与非模态对话框的区别,不在于

对话框本身,而在于对话框的打开方式。如果一个对话框本身,而在于对话框的打开方式。如果一个对话框的打开方式是模态的,那么用户就只能操纵对话框的打开方式是模态的,那么用户就只能操纵该对话框,在它被关闭之前,用户不能对程序进行该对话框,在它被关闭之前,用户不能对程序进行其它操作。而如果一个对话框的打开方式是非模态其它操作。而如果一个对话框的打开方式是非模态的,那么用户可以响应该对话框,也可以暂时不关的,那么用户可以响应该对话框,也可以暂时不关闭它,而是操纵程序的其它功能。闭它,而是操纵程序的其它功能。

案例案例:练习对话框的不同打开方式:练习对话框的不同打开方式目标目标:掌握对话框的模态和非模态打开技巧:掌握对话框的模态和非模态打开技巧

Page 79: 第 6 章  C# 开发 Windows 应用程序

控件类型 菜单 Name属性 菜单 Ttex属性

ButtonName butModal

Text 模态对话框

ButtonName butModeless

Text 非模态对话框

表 6-21 DialogTest 方案中控件属性设置

步骤:步骤:11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ DialogTesDialogTes

t”t” 的解决方案。的解决方案。22 、通过工具箱向窗体添加两个、通过工具箱向窗体添加两个 ButtonButton 控控

件,属性按表件,属性按表 6-216-21 设置。设置。

Page 80: 第 6 章  C# 开发 Windows 应用程序

按照表按照表 6-216-21 设置完控件属性后,程序的设计设置完控件属性后,程序的设计界面如图界面如图 6-356-35 所示。所示。

图 6-35 DialogTest 方案设计界面

Page 81: 第 6 章  C# 开发 Windows 应用程序

33 、用鼠标单击“项目、用鼠标单击“项目 ->->添加添加 WindowsWindows 窗体…”菜单,添加一个窗体…”菜单,添加一个新窗体,名称为“新窗体,名称为“ Test.cs”Test.cs” 。。

44 、用鼠标双击“模态对话框”按钮和“非模态对话框”按钮,产、用鼠标双击“模态对话框”按钮和“非模态对话框”按钮,产生两段代码框架,分别在其中编写如下代码:生两段代码框架,分别在其中编写如下代码:

private void butModal_Click(object sender, private void butModal_Click(object sender, System.EventArgs e)System.EventArgs e)

{{Test t=new Test();Test t=new Test();t.ShowDialog();t.ShowDialog();

}}private void butModeless_Click(object sender, private void butModeless_Click(object sender,

System.EventArgs e)System.EventArgs e){{

Test t=new Test();Test t=new Test();t.Show();t.Show();

}}

代码说明:代码说明:(( 11)) ShowDialog()ShowDialog() 方法以模态方式打开对话框;方法以模态方式打开对话框;(( 22)) Show()Show() 方法以非模态方式打开对话框。方法以非模态方式打开对话框。

Page 82: 第 6 章  C# 开发 Windows 应用程序

55 、按、按 F5F5 编译并运行程序,当单击“模态对话框”按钮时,程编译并运行程序,当单击“模态对话框”按钮时,程序以模态方式打开一个对话框,此时我们用鼠标单击该对话序以模态方式打开一个对话框,此时我们用鼠标单击该对话框以外的地方,程序不会响应,界面如图框以外的地方,程序不会响应,界面如图 6-366-36 所示;所示;

图 6-36 模态对话框

Page 83: 第 6 章  C# 开发 Windows 应用程序

如果用鼠标单击“非模态对话框”按钮,程序则以非模态方式打如果用鼠标单击“非模态对话框”按钮,程序则以非模态方式打开一个对话框,此时我们用鼠标单击该对话框以外的地方,程序会立即开一个对话框,此时我们用鼠标单击该对话框以外的地方,程序会立即响应我们的单击事件,而刚才打开的对话框会失去焦点,界面如图响应我们的单击事件,而刚才打开的对话框会失去焦点,界面如图 6-376-37所示。 所示。

图 6-37 非模态对话框

Page 84: 第 6 章  C# 开发 Windows 应用程序

6.4.2 6.4.2 通用对话框通用对话框11 、、 OpenFileDialogOpenFileDialog 对话框对话框

OpenFileDialogOpenFileDialog 对话框是“打开文件”对话框,很多软件都对话框是“打开文件”对话框,很多软件都有打开文件的功能,实际上,该对话框不仅提供了在磁盘上寻找要打有打开文件的功能,实际上,该对话框不仅提供了在磁盘上寻找要打开的文件的功能,而且还提供了打开文件的具体方法。开的文件的功能,而且还提供了打开文件的具体方法。

(( 11)常用方法)常用方法ShowDialog()ShowDialog() 方法方法本方法用于以模态方式显示“打开文件”对话框。本方法用于以模态方式显示“打开文件”对话框。OpenFile()OpenFile() 方法方法本方法用于打开用户选定的文件。本方法用于打开用户选定的文件。(( 22)常用属性)常用属性FileNameFileName本属性用于获取或设置一个包含在文件对话框中选定的文件名本属性用于获取或设置一个包含在文件对话框中选定的文件名

的字符串。的字符串。TitleTitle本属性用于获取或设置文件对话框标题。本属性用于获取或设置文件对话框标题。

Page 85: 第 6 章  C# 开发 Windows 应用程序

6.4.2 6.4.2 通用对话框通用对话框22 、、 SaveFileDialogSaveFileDialog 对话框对话框

SaveFileDialogSaveFileDialog 对话框是“保存文件”对话框,如果软件提对话框是“保存文件”对话框,如果软件提供保存文件的功能,我们经常需要允许用户确定文件保存的位置和名供保存文件的功能,我们经常需要允许用户确定文件保存的位置和名称,此时正需要使用称,此时正需要使用 SaveFileDialogSaveFileDialog 对话框。对话框。

(( 11)常用方法)常用方法 ShowDialog()ShowDialog() 方法方法本方法用于以模态方式显示“保存文件”对话框。本方法用于以模态方式显示“保存文件”对话框。OpenFile()OpenFile() 方法方法本方法用于打开用户选定的具有读本方法用于打开用户选定的具有读 // 写权限的文件。写权限的文件。(( 22)常用属性)常用属性FileNameFileName本属性用于获取或设置一个包含在文件对话框中选定的文件名本属性用于获取或设置一个包含在文件对话框中选定的文件名

的字符串。的字符串。TitleTitle本属性用于获取或设置文件对话框标题。本属性用于获取或设置文件对话框标题。 FilterFilter本属性用于获取或设置当前文件名筛选器字符串,该字符串决本属性用于获取或设置当前文件名筛选器字符串,该字符串决

定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。

Page 86: 第 6 章  C# 开发 Windows 应用程序

6.4.2 6.4.2 通用对话框通用对话框33 、、 FontDialogFontDialog 对话框对话框

FontDialogFontDialog 对话框为用户提供了当前系统的字体选对话框为用户提供了当前系统的字体选择,我们通过该对话框可以设置字体的名称、大小、风格择,我们通过该对话框可以设置字体的名称、大小、风格等。等。

(( 11)常用方法)常用方法ShowDialog()ShowDialog() 方法方法本方法用于以模态方式显示“字体”对话框。本方法用于以模态方式显示“字体”对话框。(( 22)常用属性)常用属性FontFont本属性用于获取或设置选定的字体。本属性用于获取或设置选定的字体。MaxSizeMaxSize本属性用于获取或设置用户可选择的最大磅值。本属性用于获取或设置用户可选择的最大磅值。MinSizeMinSize本属性用于获取或设置用户可选择的最小磅值。本属性用于获取或设置用户可选择的最小磅值。

Page 87: 第 6 章  C# 开发 Windows 应用程序

6.4.2 6.4.2 通用对话框通用对话框44 、、 ColorDialogColorDialog 对话框对话框

ColorDialogColorDialog 对话框为用户提供了颜色选择功能。如果软件需对话框为用户提供了颜色选择功能。如果软件需要允许用户对某些颜色进行修改的话,那么程序员就可以通过要允许用户对某些颜色进行修改的话,那么程序员就可以通过 ColorDColorDialogialog 对话框来展示该项功能了。对话框来展示该项功能了。

(( 11)常用方法)常用方法ShowDialog()ShowDialog() 方法方法本方法用于以模态方式显示“颜色”对话框。本方法用于以模态方式显示“颜色”对话框。(( 22)常用属性)常用属性 ColorColor本属性用于获取或设置用户选定的颜色值。本属性用于获取或设置用户选定的颜色值。CustomColorsCustomColors本属性用于获取或设置对话框中显示的自定义颜色集。本属性用于获取或设置对话框中显示的自定义颜色集。 FullOpenFullOpen本属性用于获取或设置一个值,该值指示用于创建自定义颜色本属性用于获取或设置一个值,该值指示用于创建自定义颜色

的控件在对话框打开时是否可见。的控件在对话框打开时是否可见。

Page 88: 第 6 章  C# 开发 Windows 应用程序

案例:学习几种通用对话框的使用方法案例:学习几种通用对话框的使用方法目标:掌握目标:掌握 OpenFileDialogOpenFileDialog 、、 SaveFileDSaveFileDialogialog 、、 FontDialogFontDialog 和和 ColorDialogColorDialog 的使的使用技巧用技巧步骤:步骤:

11 、启动、启动 VS.NETVS.NET ,建立名为“,建立名为“ ComCommonDialogTest”monDialogTest” 的解决方案。的解决方案。

22 、通过工具箱向窗体添加四个、通过工具箱向窗体添加四个 ButtoButtonn 控件和一个控件和一个 LabelLabel 控件,属性按表控件,属性按表 6-226-22设置。设置。

Page 89: 第 6 章  C# 开发 Windows 应用程序

控件类型 菜单 Name属性 菜单 Ttex属性

ButtonName butOpen

Text 打开文件 ...

ButtonName butSave

Text 保存文件 ...

ButtonName butFont

Text 字体 ...

ButtonName butColor

Text 颜色 ...

Label

Name lblInfo

BorderStyle Fixed3D

Font 宋体 , 10.5pt, style=Bold

Text (空 )

表 6-22 CommonDialogTest 方案中控件属性设置

Page 90: 第 6 章  C# 开发 Windows 应用程序

33 、通过工具箱想窗体添加一个、通过工具箱想窗体添加一个 OpenFileDialogOpenFileDialog 控件、一个控件、一个 SSaveFileDialogaveFileDialog 控件、一个控件、一个 FontDialogFontDialog 控件和一个控件和一个 ColorDiColorDialogalog 控件。具体界面如图控件。具体界面如图 6-386-38 所示。所示。

图 6-38 CommonDialogTest 设计界面

Page 91: 第 6 章  C# 开发 Windows 应用程序

44 、用鼠标分别双击上述四个按钮,产生它们关于鼠、用鼠标分别双击上述四个按钮,产生它们关于鼠标单击事件的代码框架,并分别编写如下代码:标单击事件的代码框架,并分别编写如下代码:

//// 打开文件打开文件private void butOpen_Click(object private void butOpen_Click(object

sender, System.EventArgs e)sender, System.EventArgs e){{

//// 模态显示“打开文件”对话框模态显示“打开文件”对话框this.openFileDialog1.ShowDialogthis.openFileDialog1.ShowDialog

();();////在在 LabelLabel 控件中显示用户要打开的控件中显示用户要打开的

文件的名称文件的名称this.lblInfo.Text="this.lblInfo.Text=" 您要打开的文件您要打开的文件

名:名: "+this.openFileDialog1.FileName;"+this.openFileDialog1.FileName;}}

Page 92: 第 6 章  C# 开发 Windows 应用程序

//// 保存文件保存文件private void butSave_Click(object private void butSave_Click(object

sender, System.EventArgs e)sender, System.EventArgs e){{

//// 模态显示“保存文件”对话框模态显示“保存文件”对话框this.saveFileDialog1.ShowDialogthis.saveFileDialog1.ShowDialog

();();////在在 LabelLabel 控件中显示用户要保存的控件中显示用户要保存的

文件的名称文件的名称this.lblInfo.Text="this.lblInfo.Text=" 您要保存的文件您要保存的文件

名:名: "+this.saveFileDialog1.FileName;"+this.saveFileDialog1.FileName;}}

Page 93: 第 6 章  C# 开发 Windows 应用程序

//// 字体字体private void butFont_Click(object private void butFont_Click(object

sender, System.EventArgs e)sender, System.EventArgs e){{

//// 模态显示“字体”对话框模态显示“字体”对话框this.fontDialog1.ShowDialog();this.fontDialog1.ShowDialog();////在在 LabelLabel 控件中显示用户选中的字控件中显示用户选中的字

体的名称体的名称this.lblInfo.Text="this.lblInfo.Text=" 您选中的字您选中的字

体:体: "+this.fontDialog1.Font.Name;"+this.fontDialog1.Font.Name;

}}

Page 94: 第 6 章  C# 开发 Windows 应用程序

//// 颜色颜色private void butColor_Click(object private void butColor_Click(object

sender, System.EventArgs e)sender, System.EventArgs e){{

//// 模态显示“颜色”对话框模态显示“颜色”对话框this.colorDialog1.ShowDialog();this.colorDialog1.ShowDialog();////在在 LabelLabel 控件中显示用户选中颜色控件中显示用户选中颜色

值值this.lblInfo.Text="this.lblInfo.Text=" 您选中的颜您选中的颜

色:色: "+this.colorDialog1.Color.ToString();"+this.colorDialog1.Color.ToString();

}}注意:在上述四段代码中,每段代码运行完注意:在上述四段代码中,每段代码运行完

后,都会在名称为后,都会在名称为 lblInfolblInfo 的的 LabelLabel 控件中显示运控件中显示运行结果。行结果。

Page 95: 第 6 章  C# 开发 Windows 应用程序

55 、按、按 F5F5 编译并运行程序,然后单击“打开文件”按编译并运行程序,然后单击“打开文件”按钮,出现如图钮,出现如图 6-396-39 所示的界面,然后选择要打开的文所示的界面,然后选择要打开的文件,再单击“打开”按钮。件,再单击“打开”按钮。

图 6-39 “ 打开文件”对话框

Page 96: 第 6 章  C# 开发 Windows 应用程序

66 、单击“保存文件”按钮,出现如图、单击“保存文件”按钮,出现如图 6-406-40 所示的界面,所示的界面,然后选择合适的驱动器和文件夹,在“文件名”文本框然后选择合适的驱动器和文件夹,在“文件名”文本框输入要保存的文件名,再单击“保存”按钮。输入要保存的文件名,再单击“保存”按钮。

图 6-40 “ 保存文件”对话框

Page 97: 第 6 章  C# 开发 Windows 应用程序

77 、单击“字体”按钮,出现如图、单击“字体”按钮,出现如图 6-416-41 所示的界面,选所示的界面,选择一种字体后,再单击“确定”按钮,择一种字体后,再单击“确定”按钮, LabelLabel 控件将控件将显示选中的字体。 显示选中的字体。

图 6-41 “ 字体”对话框

Page 98: 第 6 章  C# 开发 Windows 应用程序

88 、单击“颜色”对话框,出现如图、单击“颜色”对话框,出现如图 6-426-42 所示的界面,所示的界面,选择一种颜色后,再单击“确定”按钮,选择一种颜色后,再单击“确定”按钮, LabelLabel 控件控件将显示选中的颜色值。将显示选中的颜色值。

图 6-42 “ 颜色”对话框

Page 99: 第 6 章  C# 开发 Windows 应用程序

本章小结本章小结本章主要介绍如何通过本章主要介绍如何通过 C#C# 语言进行语言进行 WindowsWindows

应用程序开发。首先介绍通过应用程序开发。首先介绍通过 VS.NETVS.NET 开发开发 Windows Windows GUIGUI 程序的基本开发步骤,然后用大量的篇幅通过多程序的基本开发步骤,然后用大量的篇幅通过多个案例讲解基本个案例讲解基本 Windows FormsWindows Forms 控件的使用技巧、控件的使用技巧、常用属性和常用事件;接着阐述主菜单和上下文菜单常用属性和常用事件;接着阐述主菜单和上下文菜单的设计方法,最后讲解模态对话框、非模态对话框和的设计方法,最后讲解模态对话框、非模态对话框和通用对话框的开发方法。通用对话框的开发方法。

通过本章的学习,读者应掌握用通过本章的学习,读者应掌握用 C#C# 语言在语言在 VS.NVS.NETET 环境下开发环境下开发 Windows GUIWindows GUI 应用程序的基本技能。应用程序的基本技能。