c窗体应用程序设计

上传人:san****019 文档编号:70759773 上传时间:2019-01-18 格式:PPT 页数:104 大小:1.21MB
返回 下载 相关 举报
c窗体应用程序设计_第1页
第1页 / 共104页
c窗体应用程序设计_第2页
第2页 / 共104页
c窗体应用程序设计_第3页
第3页 / 共104页
c窗体应用程序设计_第4页
第4页 / 共104页
c窗体应用程序设计_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《c窗体应用程序设计》由会员分享,可在线阅读,更多相关《c窗体应用程序设计(104页珍藏版)》请在金锄头文库上搜索。

1、,第 6 章 窗体应用程序设计,6.1 一个简单的文本编辑器 6.2 组件的公共属性、事件和方法 6.3 常用的控件 6.4常用的对话框 6.5 消息对话框 6.6 菜单和工具栏的设计 6.7 实例多文档界面编辑器,本 章 内 容,6.1 一个简单的文本编辑器,一个简单的文本编辑器应用程序: 可以实现对txt文件的读取和保存以及对字符的简单编辑操作。,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,(1)创建C#窗体应用程序TxtEditApp:将窗体Form1的text属性值设置为“简单的文本编辑器”,然后在窗体上分别添加控件richTextBox1和组件openFile

2、Dialog1、saveFileDialog1、toolStrip1,并将控件richTextBox1的Dock属性值设置为Fill,使之充满整个窗体。,编辑器界面,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,(2)选择菜单“项目|添加组件”命令,在打开的“添加新项”对话框中选择“Windows窗体”项,然后单击“添加”按钮,即可为程序添加一个新的窗体(其默认名为Form2)。在新窗体上添加几个Label控件,以显示相关信息:,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,(3)点击控件richTextBox1上方的菜单栏,然后依次输入相应的菜单项

3、:,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)|*.txt“; if (openFileDialog1.ShowDialog() = DialogRe

4、sult.OK) richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); ,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,用同样的方法为其他菜单项编写事件处理代码,结果如下: /“Save file”菜单项 private void saveFileToolStripMenuItem_Click(object sender, EventArgs e) saveFileDialog1.Filter = “txt files(*.txt)|*.txt“; if (sav

5、eFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); /“Exit”菜单项 private void exitToolStripMenuItem_Click(object sender, EventArgs e) Close(); /“About”菜单项 private void aboutToolStripMenuItem_Click(object sender, EventArgs e) Fo

6、rm2 frm = new Form2(); frm.ShowDialog(); ,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,(4)执行该程序后,选择相应的菜单命令,可以打开txt文件,也可以在richTextBox1编辑文本后保存到txt文件中:,6.1.1 创建文本编辑器程序的步骤,6.1 一个简单的文本编辑器,【说明】 组件是指没有界面的组件(运行时不可见); 控件是指有界面的组件(运行时可见)。 但有的时候也把两者统称为组件,其具体意义要根据上下文来决定。,6.2 组件的公共属性、事件和方法,C#中的组件都继承System.Object类 窗体控件都继承了Sy

7、stem.Windows.Forms.Control类(该类也继承Object类) 因此了解System.Object类的一些常用属性、事件和方法对掌握下文要介绍的常用组件的使用方法有着事半功倍的效果。,6.2.1 Object类,6.2 组件的公共属性、事件和方法,1. public virtual bool Equals(object obj) 该方法用于判断当前对象和给定的对象是否相等。在默认情况下(没有重写该方法时),对象a和b相等是指a和b是非空的且指向同一个对象。 由于Equals()方法是一个虚方法,我们可以在定义的类中重写它。这样,对象a和b在什么情况下才算相等是完全由重写代码

8、来决定。实际上,C#的许多类都重写了Equals()方法。 2. public virtual int GetHashCode() GetHashCode()方法返回object对象的哈希码,哈希码是通过一定的算法并根据对象在内存中的地址来计算的。此算法可以保证不同对象的哈希码重复的可能性很小。,6.2.1 Object类,6.2 组件的公共属性、事件和方法,2. public virtual string ToString() 在定义的类中可以重写ToString()方法。如果没有重写,则该方法返回对象所属类的名称。实际上,C#提供的类几乎都重写了该方法,其中大部分的功能是将相应类型的数据转

9、化为字符串数据。,6.2.2 Control类,6.2 组件的公共属性、事件和方法,Control类的属性、方法和事件是所有窗体控件供有的。了解Control类的特征对窗体应用程序设计是至关重要的。,1. Control类的属性 (1)Text属性 Text属性值就是控件显示的文本内容,也是用户输入字符创串地方,其类型为字符串型。在程序运行的过程中,该属性值可读可写。如 Edit1-Text = “北京奥运“; /向编辑框写字串 String str = Edit1-Text; /读取编辑框中的内容 (2)Anchor属性 该属性用于设定控件与其容器控件在四个边沿(左、右、上、下)距离上的固定

10、位置关系。 Anchor属性是一种集合类型,可以同时取多个值,如: richTextBox1.Anchor = (AnchorStyles.Top|AnchorStyles.Bottom);,6.2.2 Control类,6.2 组件的公共属性、事件和方法,(3)Dock属性 该属性用于设定子控件在其容器控件中的填充方式,其取值和意义是: DockStyle.Fill:任何时候子控件都填充整个容器控件 DockStyle.None:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化 DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockS

11、tyle.Right:分别表示子控件向上、向下、向左和向右充满半个容器控件,容器控件的大小发生变化时子控件仍然保持这种状态,6.2.2 Control类,6.2 组件的公共属性、事件和方法,(3)Dock属性 该属性用于设定子控件在其容器控件中的填充方式,其取值和意义是: DockStyle.Fill:任何时候子控件都填充整个容器控件 DockStyle.None:子控件按照设计时的界面出现,不随容器控件的大小发生变化而变化 DockStyle.Top、DockStyle.Bottom、DockStyle.Left、DockStyle.Right:分别表示子控件向上、向下、向左和向右充满半个容

12、器控件,容器控件的大小发生变化时子控件仍然保持这种状态,Control类的其他属性,请参见教材中表6.1 。,6.2.2 Control类,6.2 组件的公共属性、事件和方法,2. Control类的方法 (1)FindForm()方法 该方法返回控件所在的窗体。 (2)Focus()方法 该方法的作用是使控件获得焦点。 (3)GetContainerControl()方法 该方法返回父控件链的下一个ContainerControl。 (4)Hide()方法 该方法用于隐藏控件,使之不可见,但控件并没有被销毁,相当于令visible 属性值为false。,6.2.2 Control类,6.2

13、组件的公共属性、事件和方法,2. Control类的方法 (5)Show()方法 该方法用于显示控件,使之可见,但控件并不是创建一个新的控件,而是显示已有的控件,相当于令visible 属性值为true。 (6)Scale(int m)方法 将控件放大或缩小控件为原来的m倍。 (7)Contains(Control ctl)方法 该方法判断控件ctl是否是当前控件的子控件,如果是则返回true,否则返回false。 (8)GetTopLevel()方法 判断当前控件是否为顶层控件,如果是则返回true,否则返回false。,6.2.2 Control类,6.2 组件的公共属性、事件和方法,3.

14、 Control类的事件 点击、滚动、移动鼠标,按下键盘等操作都会产生相应的事件,事件发生时会调用相应的事件处理函数。这种处理函数实际上也是Control类的方法,与上面方法不同的是,事件处理函数是在事件发生时由系统自动调用(而不是由用户代码调用);而上面方法则使由用户代码调用。显然,利用事件和处理函数之间的自动调用关系,可以方便实现上面方法难以完成的一些功能。 Control类定义了大量的事件,当在属性编辑框中双击事件名右边的空白处时即可自动产生事件处理函数的框架,我们只需在函数框架中编写相应的事件处理代码即可。,6.2.2 Control类,6.2 组件的公共属性、事件和方法,3. Con

15、trol类的事件 鼠标事件 Click DoubleClick MouseEnter MouseLeave MouseDown MouseUp MouseMove MouseHover 键盘事件 KeyPress KeyDown KeyUp,拖动事件 DragDrop DragEnter DragLeave DragOver 焦点事件 Enter Leave ,6.3.1 按钮类控件,6.3 常用的控件,(1)Button控件 (Button控件具有一定的代表性,这里稍微详细地介绍此控件) Button控件是最常用的按钮控件,几乎在窗体应用程序中都涉及到它。它允许用户通过单击操作来执行某些代码

16、。单击一个按钮相当于执行相应的一个函数,该函数就是单击Button按钮时产生的Click事件的事件处理函数。,在设计界面中双击Button控件(或选中该按钮后在属性框中双击“Click”项右边的空白处)即可自动形成该函数框架: private void button1_Click(object sender, EventArgs e) /事件处理代码 当单击Button控件时,该函数被执行。我们需要做的是,根据需要在该函数中编写相应的代码,以完成既定的功能。,6.3.1 按钮类控件,6.3 常用的控件,button1_Click(object sender, EventArgs e)有两个参数(其他许多事件处理函数也有这两个参数): sender:保存了导致该事件发生的控件 e:则保存了所发生的事件 例如,我们可以用下列代码显示这两个参数的相关信息: private void button1_Click(object sender, EventArgs e) Button bt = (

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号