C窗体应用程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C窗体应用程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 窗体 应用 程序设计 课件
- 资源描述:
-
1、第第 6 章章 窗体应用程序设计窗体应用程序设计6.1 一个简单的文本编辑器一个简单的文本编辑器6.2 组件的公共属性、事件和方法组件的公共属性、事件和方法6.3 常用的控件常用的控件6.4常用的对话框常用的对话框6.5 消息对话框消息对话框6.6 菜单和工具栏的设计菜单和工具栏的设计6.7 实例实例多文档界面编辑器多文档界面编辑器本本 章章 内内 容容6.1 一个简单的文本编辑器一个简单的文本编辑器应用程序一个简单的文本编辑器应用程序: 可以实现对可以实现对txt文件的读取和保存以及对字符的简单文件的读取和保存以及对字符的简单编辑操作。编辑操作。6.1.1 创建文本编辑器程序的步骤创建文本编
2、辑器程序的步骤6.1 一个简单的文本编辑器(1)创建)创建C#窗体应用程序窗体应用程序TxtEditApp:将窗体:将窗体Form1的的text属属性值设置为性值设置为“简单的文本编辑器简单的文本编辑器”,然后在窗体上分别添加控,然后在窗体上分别添加控件件richTextBox1和组件和组件openFileDialog1、saveFileDialog1、toolStrip1,并将控件,并将控件richTextBox1的的Dock属性值设置为属性值设置为Fill,使之充满整个窗体。使之充满整个窗体。编辑器界面编辑器界面6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤6.1 一个简单的
3、文本编辑器(2)选择菜单)选择菜单“项目项目|添加组件添加组件”命令,在打开的命令,在打开的“添加新项添加新项”对话框中选择对话框中选择“Windows窗体窗体”项,然后单击项,然后单击“添加添加”按钮,即按钮,即可为程序添加一个新的窗体(其默认名为可为程序添加一个新的窗体(其默认名为Form2)。在新窗体上)。在新窗体上添加几个添加几个Label控件,以显示相关信息:控件,以显示相关信息:6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤6.1 一个简单的文本编辑器(3)点击控件)点击控件richTextBox1上方的菜单栏,然后依次输入相应的上方的菜单栏,然后依次输入相应的菜单项
4、:菜单项:6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤6.1 一个简单的文本编辑器 (4)在菜单设计界面中双击)在菜单设计界面中双击“Open file”项,在自动形成的项,在自动形成的openFileToolStripMenuItem_Click()函数中编写相关代码,结果如函数中编写相关代码,结果如下:下:/“Open file”菜单项菜单项private void openFileToolStripMenuItem_Click(object sender, EventArgs e) openFileDialog1.Filter = txt files(*.txt)|*.t
5、xt; if (openFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); 6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤6.1 一个简单的文本编辑器用同样的方法为其他菜单项编写事件处理代码,结果如下:用同样的方法为其他菜单项编写事件处理代码,结果如下:/“Save file”菜单项菜单项private void saveFileToolStripMenuItem_Click(obj
6、ect sender, EventArgs e) saveFileDialog1.Filter = txt files(*.txt)|*.txt; if (saveFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); /“Exit”菜单项菜单项private void exitToolStripMenuItem_Click(object sender, EventArgs e) Close();/“
7、About”菜单项菜单项private void aboutToolStripMenuItem_Click(object sender, EventArgs e) Form2 frm = new Form2(); frm.ShowDialog();6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤6.1 一个简单的文本编辑器(4)执行该程序后,选择相应的菜单命令,可以打开)执行该程序后,选择相应的菜单命令,可以打开txt文件,文件,也可以在也可以在richTextBox1编辑文本后保存到编辑文本后保存到txt文件中:文件中:6.1.1 创建文本编辑器程序的步骤创建文本编辑器程序的步骤
8、6.1 一个简单的文本编辑器【说明说明】 组件组件是指没有界面的组件(运行时不可见);是指没有界面的组件(运行时不可见);控件控件是指有界面的组件(运行时可见)。是指有界面的组件(运行时可见)。但有的时候也把两者统称为组件,其具体意义要根据上下文来决但有的时候也把两者统称为组件,其具体意义要根据上下文来决定。定。6.2 组件的公共属性、事件和方法C#中的组件都继承中的组件都继承System.Object类类窗体控件都继承了窗体控件都继承了System.Windows.Forms.Control类(该类也继类(该类也继承承Object类)类)因此了解因此了解System.Object类的一些常用
9、属性、事件和方法对掌握下类的一些常用属性、事件和方法对掌握下文要介绍的常用组件的使用方法有着事半功倍的效果。文要介绍的常用组件的使用方法有着事半功倍的效果。6.2.1 Object类类6.2 组件的公共属性、事件和方法1. public virtual bool Equals(object obj)该方法用于判断当前对象和给定的对象是否相等。在默认情况该方法用于判断当前对象和给定的对象是否相等。在默认情况下(没有重写该方法时),对象下(没有重写该方法时),对象a和和b相等是指相等是指a和和b是非空的且指是非空的且指向同一个对象。向同一个对象。由于由于Equals()方法是一个虚方法,我们可以在
10、定义的类中重写它。方法是一个虚方法,我们可以在定义的类中重写它。这样,对象这样,对象a和和b在什么情况下才算相等是完全由重写代码来决定。在什么情况下才算相等是完全由重写代码来决定。实际上,实际上,C#的许多类都重写了的许多类都重写了Equals()方法。方法。 2. public virtual int GetHashCode()GetHashCode()方法返回方法返回object对象的哈希码,哈希码是通过一定对象的哈希码,哈希码是通过一定的算法并根据对象在内存中的地址来计算的。此算法可以保证不的算法并根据对象在内存中的地址来计算的。此算法可以保证不同对象的哈希码重复的可能性很小。同对象的哈
11、希码重复的可能性很小。 6.2.1 Object类类6.2 组件的公共属性、事件和方法2. public virtual string ToString()在定义的类中可以重写在定义的类中可以重写ToString()方法。如果没有重写,则该方法方法。如果没有重写,则该方法返回对象所属类的名称。实际上,返回对象所属类的名称。实际上,C#提供的类几乎都重写了该方提供的类几乎都重写了该方法,其中大部分的功能是法,其中大部分的功能是将相应类型的数据转化为字符串数据将相应类型的数据转化为字符串数据。6.2.2 Control类类6.2 组件的公共属性、事件和方法 Control类的属性、方法和事件是所有
12、窗体控件供有的。了解类的属性、方法和事件是所有窗体控件供有的。了解Control类的特征对窗体应用程序设计是至关重要的。类的特征对窗体应用程序设计是至关重要的。 1. Control类的属性类的属性(1)Text属性属性Text属性值就是控件显示的文本内容,也是用户输入字符创串地属性值就是控件显示的文本内容,也是用户输入字符创串地方,其类型为字符串型。在程序运行的过程中,该属性值可读可方,其类型为字符串型。在程序运行的过程中,该属性值可读可写。如写。如 Edit1-Text = 北京奥运北京奥运; /向编辑框写字串向编辑框写字串 String str = Edit1-Text; /读取编辑框中
13、的内容读取编辑框中的内容(2)Anchor属性属性该属性用于设定控件与其容器控件在四个边沿(左、右、上、下)该属性用于设定控件与其容器控件在四个边沿(左、右、上、下)距离上的固定位置关系。距离上的固定位置关系。Anchor属性是一种集合类型,可以同时取多个值,如:属性是一种集合类型,可以同时取多个值,如:richTextBox1.Anchor = (AnchorStyles.Top|AnchorStyles.Bottom);6.2.2 Control类类6.2 组件的公共属性、事件和方法(3)Dock属性属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意该属性用于设定子控件在其容器控
14、件中的填充方式,其取值和意义是:义是:DockStyle.Fill:任何时候子控件都填充整个容器控件:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockStyle.Right:分别表示子控件向上、向下、向左和向右充满:分别表示子控件向上、向下、向左和向右充满半个容器控件,容器控件的大小发生变化时子控件仍然保持这种半个容器控件,容器控件的大小发生变化时子控件仍然保持
15、这种状态状态6.2.2 Control类类6.2 组件的公共属性、事件和方法(3)Dock属性属性该属性用于设定子控件在其容器控件中的填充方式,其取值和意该属性用于设定子控件在其容器控件中的填充方式,其取值和意义是:义是:DockStyle.Fill:任何时候子控件都填充整个容器控件:任何时候子控件都填充整个容器控件DockStyle.None:子控件按照设计时的界面出现,不随容器控件:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化的大小发生变化而变化DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockStyle.Right:分别表
16、示子控件向上、向下、向左和向右充满:分别表示子控件向上、向下、向左和向右充满半个容器控件,容器控件的大小发生变化时子控件仍然保持这种半个容器控件,容器控件的大小发生变化时子控件仍然保持这种状态状态Control类的其他属性,请参见教材中表类的其他属性,请参见教材中表6.1 。6.2.2 Control类类6.2 组件的公共属性、事件和方法2. Control类的方法类的方法(1)FindForm()方法方法该方法返回控件所在的窗体。该方法返回控件所在的窗体。(2)Focus()方法方法 该方法的作用是使控件获得焦点。该方法的作用是使控件获得焦点。(3)GetContainerControl()
17、方法方法 该方法返回父控件链的下一个该方法返回父控件链的下一个ContainerControl。(4)Hide()方法方法该方法用于隐藏控件,使之不可见,但控件并没有被销毁,相当于令该方法用于隐藏控件,使之不可见,但控件并没有被销毁,相当于令visible 属性值为属性值为false。6.2.2 Control类类6.2 组件的公共属性、事件和方法2. Control类的方法类的方法(5)Show()方法方法 该方法用于显示控件,使之可见,但控件并不是创建一个新的控件,而是该方法用于显示控件,使之可见,但控件并不是创建一个新的控件,而是显示已有的控件,相当于令显示已有的控件,相当于令visib
18、le 属性值为属性值为true。(6)Scale(int m)方法方法将控件放大或缩小控件为原来的将控件放大或缩小控件为原来的m倍。倍。(7)Contains(Control ctl)方法方法该方法判断控件该方法判断控件ctl是否是当前控件的子控件,如果是则返回是否是当前控件的子控件,如果是则返回true,否则返,否则返回回false。(8)GetTopLevel()方法方法判断当前控件是否为顶层控件,如果是则返回判断当前控件是否为顶层控件,如果是则返回true,否则返回,否则返回false。6.2.2 Control类类6.2 组件的公共属性、事件和方法3. Control类的事件类的事件点
19、击、滚动、移动鼠标,按下键盘等操作都会产生相应的事件,点击、滚动、移动鼠标,按下键盘等操作都会产生相应的事件,事件发生时会调用相应的事件处理函数。这种处理函数实际上也事件发生时会调用相应的事件处理函数。这种处理函数实际上也是是Control类的方法,与上面方法不同的是,事件处理函数是在事类的方法,与上面方法不同的是,事件处理函数是在事件发生时由系统自动调用(而不是由用户代码调用);而上面方件发生时由系统自动调用(而不是由用户代码调用);而上面方法则使由用户代码调用。显然,利用事件和处理函数之间的自动法则使由用户代码调用。显然,利用事件和处理函数之间的自动调用关系,可以方便实现上面方法难以完成的
20、一些功能。调用关系,可以方便实现上面方法难以完成的一些功能。Control类定义了大量的事件,当在属性编辑框中双击事件名右边类定义了大量的事件,当在属性编辑框中双击事件名右边的空白处时即可自动产生事件处理函数的框架,我们只需在函数的空白处时即可自动产生事件处理函数的框架,我们只需在函数框架中编写相应的事件处理代码即可。框架中编写相应的事件处理代码即可。6.2.2 Control类类6.2 组件的公共属性、事件和方法3. Control类的事件类的事件鼠标事件鼠标事件ClickDoubleClickMouseEnterMouseLeaveMouseDownMouseUpMouseMoveMous
21、eHover键盘事件键盘事件KeyPressKeyDownKeyUp拖动事件拖动事件DragDropDragEnterDragLeaveDragOver 焦点事件焦点事件EnterLeave 6.3.1 按钮类控件按钮类控件6.3 常用的控件(1)Button控件控件(Button控件具有一定的代表性,这里稍微详细地介绍此控件)控件具有一定的代表性,这里稍微详细地介绍此控件)Button控件是最常用的按钮控件,几乎在窗体应用程序中都涉及控件是最常用的按钮控件,几乎在窗体应用程序中都涉及到它。它允许用户通过单击操作来执行某些代码。单击一个按钮到它。它允许用户通过单击操作来执行某些代码。单击一个按
22、钮相当于执行相应的一个函数,该函数就是单击相当于执行相应的一个函数,该函数就是单击Button按钮时产生按钮时产生的的Click事件的事件处理函数。事件的事件处理函数。在设计界面中双击在设计界面中双击Button控件(或选中该按钮后在属性框中双击控件(或选中该按钮后在属性框中双击“Click”项右边的空白处)即可自动形成该函数框架:项右边的空白处)即可自动形成该函数框架:private void button1_Click(object sender, EventArgs e) /事件处理代码事件处理代码当单击当单击Button控件时,该函数被执行。我们需要做的是,根据需控件时,该函数被执行。
23、我们需要做的是,根据需要在该函数中编写相应的代码,以完成既定的功能。要在该函数中编写相应的代码,以完成既定的功能。6.3.1 按钮类控件按钮类控件6.3 常用的控件button1_Click(object sender, EventArgs e)有两个参数(其他许多有两个参数(其他许多事件处理函数也有这两个参数):事件处理函数也有这两个参数):sender:保存了导致该事件发生的控件:保存了导致该事件发生的控件e:则保存了所发生的事件:则保存了所发生的事件例如,我们可以用下列代码显示这两个参数的相关信息:例如,我们可以用下列代码显示这两个参数的相关信息:private void button1
24、_Click(object sender, EventArgs e) Button bt = (Button)sender; textBox1.Text = bt.Text; Type ty = e.GetType(); textBox2.Text = ty.ToString(); 结果结果textBox1和和textBox2分别显示分别显示“button1”和和“System.Windows.Forms. MouseEventArgs”。6.3.1 按钮类控件按钮类控件6.3 常用的控件(2)RadioButton按钮(单选按钮)按钮(单选按钮)Checked属性属性:当该值为:当该值为tr
25、ue时处于选中状态,为时处于选中状态,为false时处于未时处于未选中状态,反之亦然。选中状态,反之亦然。RadioButton按钮具有排斥性,即当一个按钮为选中状态时,其按钮具有排斥性,即当一个按钮为选中状态时,其他的他的RadioButton则处于未被选中状态则处于未被选中状态CheckedChanged事件事件:当单选按钮的状态发生改变(:当单选按钮的状态发生改变(Checked属性值由属性值由true变为变为false,或由,或由false变为变为true)时,)时,CheckedChanged事件被触发,紧接着执行事件被触发,紧接着执行CheckedChanged()方方法。因此,希
展开阅读全文