《Windows编程基础-.pdf》由会员分享,可在线阅读,更多相关《Windows编程基础-.pdf(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Windows编程基础1-1 课程简介与课程定位随着微软开发技术.NET 2.0,新一代服务器产品和数据库产品的推出,基于.NET2.0环境下的软件系统开发越来越受到软件行业和应用企业的亲睐。Visual Studio.NET为不同的应用程序提供了丰富的环境,一个项目本身可以由多种语言开发,例如C,C+,C#,VB 等。系统的应用程序即可以包括控制台应用程序,也可以包括Windows Forms开发,还可以应用于各种的 WEB 平台应用开发设计和手持移动设备等。本书着重在于构建Windows的应用程序在C#环境下的开发应用,扬弃了C#的编程基础和抽象的软件设计思想,如果期望尽快进入到C#Win
2、dows程序设计领域,这是一本比较适合的入门级教材。1-1-1本门课程简介本课定位目标为高等院校计算机相关专业,在开设基于Visual Studio.NET2005环境下,通过 C#语言开发的Windows Forms开发程序设计。要求开设本门课程的先修课程包括:C#程序设计基础,数据库基础理论与应用,数据结构与算法,面向对象的程序设计等,以实现学生迅速进入Windows Forms开发为目的,并可以设计出符合标准的Windows的应用软件。学习完本门课程,学生将掌握以下基本知识点:Windows 窗体设计界面介绍Winform 窗口的基本操作窗体容器以及MDI和 SDI 应用程序设计消息框窗
3、口对话机制基本窗体控件设计开发高级窗体控件开发Winform 文件操作的开发设计GDI+图形图像编程技术多线程编程技术ADO.NET 数据库访问技术Winform 网络编程技术水晶报表技术Winform 中的打包和部署1-1-2本门课程体系定位本门课程绝非孤立存在的,其课程的开设必须建立在一整套课程体系的基础之上,具体课程体系见图1-1所示。图 1-1 C#Windows程序设计在课程体系中的地位根据图 1-1所示,C#Windows程序设计在整体课程体系中的价值是处于承上启下的重要地位和作用,一方面 C#Windows程序设计是C#及面向对象程序设计思想的延伸和具体应用,另一方面是熟悉.NE
4、T FrameWork的非常好的手段,同时也为下一阶段的ASP.NET的开发奠定了应用实践基础。因而学好本门课程对于软件技术专业的学生意义重大。1-2 windows和窗体的基本概念本节学习目标:理解Windows 窗体及设计原则WinForm应用程序的入口点设置 InitializeComponent()方法灵活运用WinForm c#开发基本环境1-2-1Windows Forms程序基本结构在使用 widows 操作系统时候,经常会遇到如图1-2的窗体操作程序。一般而言,这种操作多是用户在PC 机上面的独立操作。图 1-2 Windows程序应用案例下面我们建立第一个C#环境下面的Win
5、dows应用程序。启动Visual Stutio 2005,默认语言为C#语言,建立如图1-3 所示的 Windows应用程序。一般而言,Visual C#开发应用程序步骤包括:建立项目、界面设计、属性设计和代码设计几个阶段。图 1-3 新建 Windows应用项目在建立新的项目时候需定义好项目的名称,具体的物理路径位置,点击确定后Visual C#将自动创建一个新的默认窗体FORM1,“窗体设计器”的界面如图1-4所示。图 1-4 窗体设计器界面在展开的窗体设计器界面之中,平时使用较多的操作控制区域分别是:工具箱,解决方案资源管理器和属性。工具箱面板将为Windows窗体提供强有力的工具,属
6、性面板将反映拖拽过来的 Windows控件的具体属性设置,解决方案资源管理器反映当前开发时候所需要操作的各种文件资源。在首次进行设计时候,如果遇到无法找到这些操作控制区域的情况,请在窗体设计界面的右上角选择如图1-5所示区域,就可以展开这些控制区。图 1-5 展开各种资源控制区域1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111
7、11111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1-2 Windows 编程基础(了解 winForm 程序的代码结构)1 初识 winForm代码在图 1-4的主要窗体控制区域用右键打开后台的C#代码,如图1-6所示。图 1-6 查看 winForm程序的代码展开的代码如下,具体意义见每行的注释信息:using System;/基础核心命名空间using System.Collections.Generic;/包含了 ArrayList、BitA
8、rray、Hashtable、Stack、StringCollection 和 StringTable 类using System.ComponentModel;using System.Data;/数据库访问控制using System.Drawing;/绘图类using System.Text;/文本类using System.Windows.Forms;/大量窗体和控件namespace WindowsApplication1/当前操作的命名控件是WindowsApplication1 publicpartialclass Form011:Form/从 System.Windows.Fo
9、rms.Form 中派生 public Form011()InitializeComponent();/注意该方法在下面的介绍 小知识:理解 Using 语句Using 语句通常出现在一个.cs文件中的头部,用于定义引用系统命名空间,具体的操作方法和属性等被定义在该系统的命名控件之中,比如如果不写using System.Drawing,则无法在后期开发之中进行图形图像方面的设计开发。另一方面,用户可以定义用户自定义类在一个用户自定义的命名空间下,这样在头部通过Using 语句声明该用户自定义的命名空间,从而获取该命名空间下的具体类以及该类的属性和方法,达到对于系统软件分层开发的目的。2 理解
10、 InitializeComponent()方法在每一个窗体生成的时候,都会针对于当前的窗体定义InitializeComponent()方法,该方法实际上是由系统生成的对于窗体界面的定义方法。/位于.cs 文件之中的InitializeComponent()方法public Form011()InitializeComponent();在每一个Form文件建立后,都会同时产生程序代码文件.CS 文件,以及与之相匹配的.Designer.CS文件,业务逻辑以及事件方法等被编写在.CS 文件之中,而界面设计规则被封装在.Designer.CS文件里,下面代码为.Designer.CS文件的系统自
11、动生成的脚本代码。namespace WindowsApplication1 partialclass Form011 /必需的设计器变量。/private System.ComponentModel.IContainer components=null;/清理所有正在使用的资源。/如果应释放托管资源,为true;否则为false。protectedoverridevoid Dispose(bool disposing)if(disposing&(components!=null)components.Dispose();base.Dispose(disposing);#region Wind
12、ows 窗体设计器生成的代码/设计器支持所需的方法-不要使用代码编辑器修改此方法的内容。/privatevoid InitializeComponent()this.button1=new System.Windows.Forms.Button();this.label1=new System.Windows.Forms.Label();this.SuspendLayout();/button1/this.button1.Location=new System.Drawing.Point(70,43);this.button1.Name=button1;this.button1.Size=ne
13、w System.Drawing.Size(75,23);this.button1.TabIndex=0;this.button1.Text=button1;this.button1.UseVisualStyleBackColor=true;/label1/this.label1.AutoSize=true;this.label1.Location=new System.Drawing.Point(12,54);this.label1.Name=label1;this.label1.Size=new System.Drawing.Size(41,12);this.label1.TabIndex
14、=1;this.label1.Text=label1;/Form011/this.AutoScaleDimensions=new System.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=new System.Drawing.Size(458,326);this.Controls.Add(this.label1);this.Controls.Add(this.button1);this.FormBorderStyle=System.Windows
15、.Forms.FormBorderStyle.FixedToolWindow;this.Name=Form011;this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen;this.Text=Form011;this.ResumeLayout(false);this.PerFormLayout();#endregion private System.Windows.Forms.Button button1;private System.Windows.Forms.Label label1;在代码之中,可以很容易
16、发现InitializeComponent()方法和 Dispose()方法,前者为界面设计的变现内容,后者为表单释放系统资源时候执行编码。小实验:修改 Windows 窗体的.Designer.CS 文件请更改 InitializeComponent()方法中的相关属性参数,观察界面的显示是否有变化。3 创建 WinForm应用程序的入口点在 WinForm应用程序的开发设计中,一般会通过多窗体协调一致的处理具体业务流程。这种应用必须由程序员决定那个WinForm的窗体第一个被触发执行,在Windows Forms开发程序设计中由位于根目录下的Program.cs文件决定。展开Program
17、.cs文件,按照下面代码即可决定那个WinForm的表单第一个被触发执行。小实验:修改 WinForm应用程序的入口点using System;using System.Collections.Generic;using System.Windows.Forms;namespace WindowsApplication1 staticclassProgram /应用程序的主入口点。/STAThread staticvoid Main()Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(f
18、alse);Application.Run(newForm011();/此处黑体字部分决定那个窗体文件首先被执行。1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111
19、11111111111111 1-3 Winform 中的常用控件(1)1-3 Winform 中的常用控件本节学习目标:System.Windows.Forms.Control基本结构使用基本控件如标签、文本、按钮、列表框和组合框掌握窗体的常用属性和方法进行基本控件的开发设计工作深入掌握系统对话框的属性及代码开发掌握模式对话与非模式对话的概念及差异了解模式对话的开发机理1-3-1简介Winform 中的常用控件来自于系统System.Windows.Forms.Control,该类库来自System.Windows.Forms命名空间之内,该命名空间提供各种控件类,使用这些控件类,可以创建丰
20、富的用户界面,具体实现功能由位于该命名空间下的Control系统类派生。Control 类为在 Form中显示的所有控件提供基本功能,Form类表示应用程序内的窗口。这包括对话框,无模式窗口和多文档界面(MDI)客户端窗口及父窗口,同时也可以通过从UserControl类派生而创建自己的控件。对于上述所有的这些可视化界面组件,我们统一称之为控件,这些控件都是源于System.Windows.Forms命名空间,该命名空间结构如图1-7。图 1-7 System.Windows.Forms命名控件集1 案例学习:建立第一个winForm应用员工信息录入功能本次实验目标是快速建立如图1-8的员工信
21、息录入窗体,通过该案例使读者快速掌握Winform 中的常用控件包括:标签控件,文本框控件,按钮控件和组合框,列表框控件。图 1-8 员工信息录入窗体目标界面实验步骤(1):由图 1-9所示,从工具箱之中拖拽具体的控件到Form窗体上,并更改标签对象和按钮的text属性为图1-8所标内容。将文本框,列表框和组合框的Enabled属性设置为False,即设置这些控件为不可用状态。图 1-9 工具箱拖拽控件对象实验步骤(2):由图 1-10所示,分别配置列表框和组合框的Items属性,在展开的字符串集合编辑器内输入图 1-10所示的具体文本信息。图 1-10 配置列表框和组合框的Items 属性实
22、验步骤(3):用鼠标双击“添加”按钮,进入.cs 文件编辑状态准备进行开发。“添加”、“取消”和“关闭”按钮的鼠标单击事件详细代码加下:小实验:添加功能源代码:private void button1_Click(object sender,EventArgs e)textBox1.Enabled=true;textBox2.Enabled=true;listBox1.Enabled=true;comboBox1.Enabled=true;/设置所有代码为可用状态;comboBox1.SelectedIndex=0;/设置组合框控件默认为第一个textBox1.Focus();/设置第一个文本
23、框后的焦点 小实验:取消功能源代码:private void button2_Click(object sender,EventArgs e)textBox1.Enabled=false;textBox2.Enabled=false;listBox1.Enabled=false;comboBox1.Enabled=false;/设置所有代码为不可用状态;小实验:关闭功能源代码:private void button3_Click(object sender,EventArgs e)Application.Exit();/通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口。问题讨论
24、:使用 Application.Exit()还是 Form.Close()呢?不论是 Application.Exit(),还是 Form.Close()都可以起到关闭当前窗体的作用,但是需要初学者了解这两种方法的差异性。一个完整的WinForm 程序从是 Application.Run(new Form1)开始,到 Application.Exit()结束,最终将执行销毁窗体和回收系统所有的资源任务,软件系统停止;而Form.close()只是关闭当前窗口和对话任务,整体程序不退出。如果只打开了一个窗体,那么这两种方案是一致的。一般而言,如果只有一个窗口或者是MDI(多文档窗体)里面的主窗口
25、则是退出程序,Form.close()也是一种安全的方式,但如果是打开多个文档窗口的情况,退出系统必须使用Application.Exit()方法。1-3-2基本控件使用1 Label标签控件Label标签控件是使用频度最高的控件,主要用以显示窗体文本信息。其基本的属性和方法定义如表1-1所示:属性说明Text 该属性用于设置或获取与该控件关联的文本方法说明 Hide 隐藏控件,调用该方法时,即使 Visible 属性设置为 True,控件也不可见 Show 相当于将控件的 Visible 属性设置为 True 并显示控件事件说明 Click 用户单击控件时将发生该事件表 1-1 Label标
26、签控件属性及方法2 案例学习:标签控件的隐藏,窗口打开与关闭本次实验目标是建立两个窗体,当点击图1-11 的登录系统时候,可以打开另一个窗体,在点击文字打开后显示学校名称,点击文字隐藏时候隐藏学校名称。通过本案例使读者快速掌握窗体的打开和关闭技巧,以及标签的隐藏方法。图 1-11 窗口打开与关闭窗体目标界面实验步骤(1):由图 1-11所示,从工具箱之中拖拽标签控件和linkLabel超链接文本控件到Form窗体上,更改标签文本的颜色、字体和大小属性,填写每个控件的Text属性文字内容,达到图1-11效果。再建立Form2窗体,以便在点击“登录系统后”可以将之打开。实验步骤(2):用鼠标双击“
27、登录系统”超链接文本,进入.cs 文件编辑状态准备进行开发。代码加下:小实验:打开新窗体源代码:private void linkLabel1_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)linkLabel1.LinkVisited=true;/确认超文本文件链接是按照链接后的样式呈现。Form2 newForm=newForm2();/实例化 Form2窗体,命名为newFormnewForm.Show();/将实例化后的窗体打开this.Hide();/当前的窗体隐藏 小实验:文字打开源代码:private void
28、linkLabel2_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)label2.Show();小实验:文字隐藏源代码:private void linkLabel2_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)label2.Hide();3 TextBox文本框控件和 Button按钮控件TextBox文本框控件是使用频度较高的控件,主要用以接收或显示用户文本信息。其基本的属性和方法定义如表1-2所示:属性说明MaxLength 可在文本框中输入的最大
29、字符数Multiline 表示是否可在文本框中输入多行文本Passwordchar 机密和敏感数据,密码输入字符ReadOnly 文本框中的文本为只读Text 检索在控件中输入的文本方法说明Clear 删除现有的所有文本Show 相当于将控件的 Visible 属性设置为 True 并显示控件事件说明KeyPress 用户按一个键结束时将发生该事件表 1-2 TextBox 文本框控件属性及方法Button按钮控件主要接收用户功能确认操作,以期执行具体的触发事件。其基本的属性和方法定义如表1-3所示:属性说明Enabled 确定是否可以启用或禁用该控件方法说明PerFormClick Butt
30、on 控件的 Click 事件事件说明Click 单击按钮时将触发该事件表 1-3 Button按钮控件属性及方法4案例学习:用户登录功能设计本次实验目标是通过用户键入名称和密码,经过判别为非空性之后,再判断是否符合系统规定的内容,无论成功或者失败都提示用户操作结果。如图1-12 所示为目标界面:图 1-12 用户登录功能设计目标界面实验步骤(1):由图 1-12 所示,从工具箱之中拖拽标签控件、Button 按钮控件以及在工具栏内的容器之中的 groupBox 控件到 Form 窗体上,调整各个控件基本属性以达到图1-12 效果。特别值得注意的是对于用户密码文本框的设置工作,其更改属性办法如
31、图1-13 所示:图 1-13 改变文本框属性成为密码框实验步骤(2):用鼠标双击“确定”按钮,进入.cs 文件编辑状态准备进行开发。代码加下:小实验:用户登录功能源代码:private void button1_Click(object sender,EventArgs e)if(textBox1.Text=string.Empty|textBox2.Text=string.Empty)/此处复习逻辑或关系的编写和如何判别字串为空 MessageBox.Show(信息禁止为空!,登录提示);/WinForm环境下的弹出对话框textBox1.Clear();textBox2.Clear();
32、textBox2.Focus();/清空名称和密码文本框,并使得名称文本框获得焦点。return;if(!textBox1.Text.Equals(admin)|!textBox2.Text.Equals(admin)MessageBox.Show(用户名称或密码为空!,登录提示);/WinForm环境下的弹出对话框textBox1.Clear();/清理文本框的内容textBox2.Clear();textBox2.Focus();/清空名称和密码文本框,并使得名称文本框获得焦点。return;else MessageBox.Show(欢迎您登录本系统!,消息提示);/WinForm环境下的
33、弹出对话框textBox1.Clear();textBox2.Clear();textBox2.Focus();小实验:取消功能源代码:private void button2_Click(object sender,EventArgs e)textBox1.Clear();textBox2.Clear();textBox2.Focus();/清空名称和密码文本框,并使得名称文本框获得焦点。问题讨论:代码是正确的,但是否是有效率的代码呢?具有相同功能的业务逻辑必须集中处理,惟其如此才可以做到代码的高可维护性和高可用性。将上述“清空名称和密码文本框,并使得名称文本框获得焦点”部分代码改为公用方法
34、clear(),代码如下:小实验:优化后的源代码:if(textBox1.Text=string.Empty|textBox2.Text=string.Empty)MessageBox.Show(信息禁止为空!,登录提示);clear();return;if(!textBox1.Text.Equals(admin)|!textBox2.Text.Equals(admin)MessageBox.Show(用户名称或密码为空!,登录提示);clear();return;else MessageBox.Show(欢迎您登录本系统!,消息提示);clear();public void clear()/
35、将具有共性的代码通过方法进行封装以提高执行效率 textBox1.Clear();textBox2.Clear();textBox2.Focus();5ListBox 列表框控件ListBox 列表框控件主要用以显示多行文本信息,以提供用户选择之用。其基本的属性和方法定义如表1-4 所示:属性说明Items列表框中的具体项目,需要用户自行编辑SelectionMode 指示列表框是单项选择,多项选择还是不可选择SelectedIndex 被选中的行索引,默认第一行为0 SelectedItem被选中的行文本内容SelectedItems ListBox的选择列表集合Text 默认的文本内容方法
36、说明ClearSelected清除当前选择事件说明SelectedIndexChanged一旦改变选择即触发该事件表 1-4 ListBox 列表框控件属性及方法6案例学习:使用列表框控件本次实验目标是在Form 窗体上建立一个列表框控件,窗体初始化的时候加载信息到列表框之中,当用户用鼠标点击某一行列表框内的信息时候,弹出对话框显示改行具体的文本信息内容。如图 1-14 所示为目标界面:图 1-14 使用列表框实验目标界面实验步骤(1):由图 1-14 所示,从工具箱之中拖拽列表框ListBox 控件到 Form 窗体上,调整控件基本属性以达到图1-14 效果。实验步骤(2):用鼠标双击窗体界
37、面,进入.cs 文件编辑状态准备进行开发。代码加下:小实验:窗体初始化加载事件源代码:private void Form1_Load(object sender,EventArgs e)this.listBox1.Items.Add(软件部);this.listBox1.Items.Add(硬件部);this.listBox1.Items.Add(财务部);this.listBox1.Items.Add(人事部);/通过 Add 方法实现对下拉列表控件的信息填充工作。小实验:单击 ListBox的某行获取该行信息源代码:private void listBox1_SelectedIndexCh
38、anged(object sender,EventArgs e)MessageBox.Show(您选择的部门是:+listBox1.SelectedItem.ToString()+,位列第+listBox1.SelectedIndex.ToString(),信息提示);/注意学习:listBox的 SelectedIndex属性代表选中的行数/注意学习:listBox的 SelectedItem属性代表选中的行信息内容 7ComboBox组合框控件ComboBox 组合框控件为典型的多选一控件,主要用以限制用户在多个固定信息情况下选择唯一一行的文本信息,以确认用户选择逻辑。其基本的属性和方法定
39、义如表1-5 所示:属性说明DropDownStyle ComboBox 控件的样式MaxDropDownItems 下拉区显示的最大项目数方法说明Select 在 ComboBox 控件上选定指定范围的文本表 1-5 ComboBox 组合框控件属性及方法8案例学习:使用组合框控件本次实验目标是在FORM 窗体上建立一个列表框控件,两个组合框控件以及一个文本框控件,通过这些控件彼此之间的关联,学习并掌握ComboBox 组合框控件的主要属性和方法。本次实验目标如图1-15 所示。图 1-15 Combo Box 组合框控件实现目标界面根据图 1-15 所示,在窗体初始化时候加载部门信息到列表
40、框和组合框内,上下组合框的DropDownStyle属性不同,上面为DropDown 类型,下面为DropDownList类型。当选择上面组合框中的具体工作部门,选中信息将分别呈现在文本框,列表框和下面的列表框之中。实验步骤(1):由图 1-15 所示,从工具箱之中拖拽一个列表框控件,两个组合框控件以及一个文本框控件到 Form 窗体上,调整控件基本属性以达到图1-15 效果。在设置上下两个组合框控件时候,分别设置其属性DropDownStyle 属性为 DropDown 和 DropDownList类型。这两种类型呈现的效果完全一样,但是 DropDown类型是可以读写的,但是 DropDo
41、wnList类型仅仅为只读状态,不可编辑。DropDownStyle还有一个属性为SimPle,列表信息完全展开,类似于列表框的样式,并且也为只读状态,不可编辑。见图1-16。图 1-16 ComboBox 组合框控件DropDownStyle属性的三种状态实验步骤(2):用鼠标双击窗体界面,进入.cs 文件编辑状态准备进行开发。代码加下:小实验:在窗体初始化事件Form_Load 中加载数据到具体控件:private void Form011_Load(object sender,EventArgs e)boBox1.Items.Add(财务部);boBox1.Items.Add(产品部);
42、boBox1.Items.Add(销售部);boBox1.Items.Add(生产部);/默认的选择是 产品部 boBox1.SelectedIndex=1;boBox2.Items.Add(财务部);boBox2.Items.Add(产品部);boBox2.Items.Add(销售部);boBox2.Items.Add(生产部);/默认的选择是 产品部 boBox2.SelectedIndex=1;listBox1.Items.Add(财务部);listBox1.Items.Add(产品部);listBox1.Items.Add(销售部);listBox1.Items.Add(生产部);/默
43、认的选择是 产品部 this.listBox1.SelectedIndex=1;/请读者注意学习comboBox,listBox控件如何定位值this.textBox1.Text=产品部;实验步骤(3):选择上面的ComboBox 控件,在其 SelectedIndexChanged 选择变换事件里面填写下面的代码。小实验:ComboBox控件的 SelectedIndexChanged事件编码:private void comboBox1_SelectedIndexChanged_1(object sender,EventArgs e)string mess=comboBox1.Select
44、edItem.ToString();comboBox2.SelectedItem=mess;listBox1.SelectedItem=mess;textBox1.Text=mess;9 对话框窗口在用户操作窗体系统时候,经常会遇到与计算机的会话机制,如报错或者某种信息反馈等。从根本上说对话框是继承窗体的并且被模式化的,对话框窗口(Dialog)更多的是从人机交互形式来看的,电脑给出提示所需参数并等待用户输入,使用者输入数据后执行,犹如一问一答的对话双方。Windows程序中一般用窗体来实现这个人机交互形式,由于是用窗体系统实现Dialog,为了达到等待用户输入的目的因此引入了系统对话框窗口概
45、念。对话框窗口机制是一种典型的重载过程,该重载是通过MessageBox.Show()方法具体体现出来的,关于Show方法的重载类型如表1-4 所示。重载方法参数说明Show(string text);显示具有指定文本的消息框。Show(string text,string caption);显示具有指定文本和标题的消息框。Show(string text,string caption,MessageBoxButtons buttons);显示具有指定文本、标题和按钮的消息框。Show(string text,string caption,MessageBoxButtons buttons,M
46、essageBoxIcon icon);在指定对象的前面显示具有指定文本、标题、按钮和图标的消息框。表 1-6 MessageBox.Show()方法重载10 案例学习:对话框窗口综合应用(1)非模式对话窗体Show的使用MessageBox.show()方法打开的窗体被称为是“非模式窗体”,这种对话窗体仅仅是显示出来系统窗口界面而已,其他显示并运行的窗口仍然可以在后台运行。另一方面,由于MessageBox.show()方法未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口和对话框。因此我们可以认为,每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由s
47、how方法打开的窗口的顺序可能会有很大的改变。本次实验目标是在Form窗体上建立一系列Button控件,通过这些按钮控件的鼠标单击事件呈现不同的对话框样式,最终显示界面如图1-17所示。表 1-17 MessageBox.Show()方法重载的不同效果实验步骤(1):由图 1-17所示,从工具箱之中拖拽3 个 Button控件和一个Label标签控件到Form窗体上,调整控件基本属性以达到图1-17效果。实验步骤(2):用鼠标双击Button控件,进入.cs 文件编辑状态准备进行开发。代码加下:小实验:“问询提示”按钮鼠标单击事件源代码:private void button1_Click(o
48、bject sender,EventArgs e)MessageBox.Show(嘿,这是简单提示!,信息提示);/第一个文本是对话框正文信息,第二个文本是窗体左上角信息标志。小实验:“简单提示”按钮鼠标单击事件源代码:private void button2_Click(object sender,EventArgs e)DialogResult result=MessageBox.Show(嘿,这是问询提示!,问询提示,MessageBoxButtons.YesNo);/1、DialogResult属性用于获取或设置MessageBox.Show()方法返回的一个值,该值在单击按钮时返回到
49、父窗体。/2、MessageBoxButtons.YesNo表示提示信息为“是,否”两种按钮if(result=DialogResult.Yes)label1.Text=您选择了 YES;else label1.Text=您选择了 NO;小实验:“复杂提示”按钮鼠标单击事件源代码:private void button3_Click(object sender,EventArgs e)DialogResult result=MessageBox.Show(嘿,这是带有图标的问询提示!,问询提示 ,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Ques
50、tion,MessageBoxDefaultButton.Button3,MessageBoxOptions.RightAlign);/1、MessageBoxButtons.YesNoCancel参数表示按钮为“是、否、取消”三种状态按钮;/2、MessageBoxIcon.Question参数表示为“问题图标”按钮/3、MessageBoxDefaultButton.Button3n参数表示默认“取消按钮”为默认触发按钮/4、MessageBoxOptions.RightAlign 参数表示对话框提示信息居右对齐。if(result=DialogResult.Yes)label1.Text