第二篇 Windows窗体编程.doc_第1页
第二篇 Windows窗体编程.doc_第2页
第二篇 Windows窗体编程.doc_第3页
第二篇 Windows窗体编程.doc_第4页
第二篇 Windows窗体编程.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教案 20072008 学年第一学期课程名称 C#可视化程序开发 授课对象 07级软件技术专业 授课教师 刘建芳 职 称 助教 教材版本 Visual c#.net项目开发实战从入门到精通 参 考 书 c# 和.NET 3.0第一步 平顶山学院教务处印制教案纸第二篇 Windows窗体编程教学目标1 了解Windows窗体编程的事件机制2 掌握常用的Windows窗体控件的使用3 掌握Windows窗体的一些高级控件的使用方法4 能够根据不同的要求选择合适的控件5 根据功能设计出满足要求的窗体界面6 选择不同的属性和方法来进行窗体编程教学重点1 常用Windows窗体控件的使用方法2 窗体控件的属性和方法的使用教学难点1 根据功能设计出满足要求的窗体界面2 选择不同的属性和方法来进行窗体编程教学方法1 知识回顾2 比较学习3 理论讲解4 课堂演示计划学时1 课堂教学(12课时)2 实验教学(8课时)教学内容1 基本窗体控件2 其他常用控件3 高级控件4 案例分析 第 1 页 教案纸第二篇Windows窗体编程窗体控件使用的知识引入:控件1 第一个窗体程序1.1建立第一个窗体程序p 建立一个“Windows应用程序”;p 修改窗体Text属性;p 运行1.2窗体代码分析p Form1.csp Form1.Designer.csp Program.cs1.3 窗体事件机制报警事件处理处理关门放狗警铃响铃事件p 事件的发布者职责n 定义事件n 为订阅者订阅该事件n 将发生的事件通知给订阅对象p 事件的订阅者(接受者)职责n 接收事件n 处理事件 第 2 页 教案纸事件机制运行的原理:事件的发布者定义事件,并为事件订阅接受者,然后发布者发布事件,事件的接收者接收事件,并调用自己的方法处理事件,p 事件的定义使用关键字event,定义规则如下: 访问修饰符 event 委托类型 事件变量p 事件的定义需要一个委托类型,这个委托类型用来定义将要处理事件的方法的类型 Class Car Public delegate viod delegateCar(string msg);/定义事件,事件是一个对象 private event delegateCar eventCar;p 事件的接收者也是普通的对象,要接收事件就必须在事件的接收者类里提供和事件定义时委托类型相同的方法Class CarHandler/定义事件处理方法 Public void HandlerEvent(string msg) Console.WriteLine(msg); p 事件的订阅通过“+=”操作符,事件的订阅可以给事件添加一个或多个方法委托Class Car public delegate void delegateCar(string msg); private event delegateCar eventCar; public Init(CarHandler obj) /订阅事件 eventCar+=new delegateCar(obj.HandlerEvent); 第 3 页 教案纸p 订阅完时间后,事件发布者还需要激发(发布)事件,一旦事件被激发,事件的接收者就会自动接收事件,然后处理事件。Class Car public void Stop() /激发事件 eventCar(“刹车”); p 事件处理三部曲:n 定义事件n 订阅事件n 激发事件1.4 窗体消息机制一个消息是一个系统定义的结构体对象。消息里面是一组数字,一个消息可以代表一个事件。鼠标或键盘操作系统处理消息窗口控件消息第 4 页 教案纸2基本窗体控件2.1 按纽(Button)控件属性说明FlatStyle按钮式样,Flat,Popup,Standard,SystemText按钮上显示的文本事件说明Click点击事件,点击按钮时触发该事件n 示例代码:Private void myButton_Click(object sender, EventArgs e) MessageBox.Show(“这里安排点击后处理逻辑!”);2.2 多选框(CheckBox)控件属性说明CheckedBool型,表示是否选中,用来获取或设置控件的选中状态Text多选框后面的文本事件说明CheckedChanged选择改变时触发n 示例代码void myCheckBox_CheckedChanged(object sender,EventArgs e) If(CheckBox)sender).Checked) MessageBox.Show(“选中我了”);2.3 单选(RadioButton)控件属性说明CheckedBool型,获取或设置控件的状态Text单选按钮后面的文本事件说明CheckedChanged选择改变时触发第 5 页 教案纸单选控件容器控件思考使用容器控件的作用是什么?分组,将同一组单选按钮控件放入一个容器控件中2.4 标签(Label)控件属性说明Text标签上的文本Image可以统统这个属性做一个图片标签,设置标签图片时注意要把标签属性AutoSize设置为false,否则标签会根据标签上文本自动缩放大小事件说明Click单击标签时发生n 示例代码 private void Form1_Load(object sender, EventArgs e) 通过代码生成一个lb标签控件 Label lb = new Label(); lb.AutoSize = false; /载入一张图片给标签Image属性 lb.Image = Image.FromFile(D:fruit.jpg); /给标签手动订阅点击事件也可直接从工具箱中拖放一个Label控件,然后设置其相应属性 lb.Click += new EventHandler(lb_Click); this.Controls.Add(lb); void lb_Click(object sender, EventArgs e) MessageBox.Show(点击我了); 第 6 页 教案纸2.5 文本框(TextBox)控件属性说明Text文本框上的内容Multiline设置多行文本框,默认为单行文本框Dock文本框填充方式,如果选择Fill将填充整个容器(默认为Form)PasswordChar将文本框设置成密码框ReadOnly设置文本框为只读ScrollBars为文本框设置滚动条TextAlign设置文本框中文本的对齐方式方法说明Clear文本框调用该方法清除文本内容AppendText向文本框追加文本事件说明TextChanged当文本框中文本改变时触发KeyPress当在文本框中按键时触发,一般用来检查当前输入的字符是否合法n 示例代码Private void btnLogin_Click(object sender,EventArgs e)/获得姓名文本框内的数据string name=this.txtName.Text;/获得密码文本框内的数据string pwd=this.txtPassword.Text;/显示登录姓名和密码MessageBox.Show(“登陆名:”+name+” 密码:”+pwd);第 7 页 教案纸2.6 组合框(ComboBox)控件示例代码:属性说明Items集合属性,是组合框内列表数据的集合,是ObjectCollection类型SelectedIndex设置或得到选中列表项索引,列表项的索引也是列表中项的序号,第一项为0,第二项为1SelectedItem当前选中的列表框,可以通过它或SelectedIndex获得当前你选中的项事件说明OnSelectedIndexChanged在选择时触发private void Form1_Load(object sender, EventArgs e) ComboBox cb = new ComboBox(); cb.Items.Add(北京); cb.Items.Add(上海); /设置当前默认选中项为第一项 cb.SelectedIndex = 0; cb.SelectedIndexChanged+=new EventHandler(cb_SelectedIndexChanged); this.Controls.Add(cb); void cb_SelectedIndexChanged(object sender, EventArgs e) MessageBox.Show(你选中的是+(ComboBox)sender).SelectedItem.ToString(); 2.7 一个小例子QQ用户登录2.8 一个小例子IT技术调查第 8 页 教案纸3 其他常用控件3.1 滚动条(ScrollBar)和进度条(ProgressBar)共同属性说明Minimum设置滚动或进度值范围的下限Maximum设置滚动或进度值范围的上限,上限和下限之间的数值就是值范围,是下面Value属性取值的范围Value当前滚动或进度的具体值,这个值应在值范围之内,Value值增加时滚动条便会滚动,进度条便会往前进度,跟踪条便会向前滚动LargeChange滚动条和跟踪条每次前进的刻度,如果Minimum为0,Maximum为100,我们可以看成控件的刻度为100,这个属性进度条中没有事件说明Scroll滚动时发生的事件,是跟踪条和滚动条的事件,进度条中常用事件是Clickn 示例(续)p 设置跟踪条、滚动条及进度条三个控件的Minimum属性值都为0,Maximum属性值都为100,Value属性值都为0。p 在跟踪条中设置事件Scroll,并加入下面代码:Private void trackBarTest_Scroll(object sender, System.EventArgs e) this.vScrollBarTest.Value=this.trackBarTest.Value; gressBarTest.Value=this.trackBarTest.Value; p 运行后,在窗口中滑动跟踪条,你会看到滚动条和进度条都会跟着变化。3.2 列表框(ListBox)控件共同属性说明Items列表项的集合MultiColum是否显示多列,默认是单列列表ColumnWidth每列的宽度SelectionMode选择模式,选择多项(MultiExtended),可以选择多项(MultiSimple),只能选择一项(One),禁止选择(None)SelectedItem列表中当前选中的项SelectedItems多选情况下,列表中当前选中的项,是一个object对象数组第 9 页 教案纸方法说明ClearSelected清除选择的项FindString查找列表中出现的项事件说明SelectedIndexChanged选择改变时触发p 代码示例private void Form1_Load(object sender,EventArgs e)ListBox lb=new ListBox();lb.SelectionMode=SelectionMode.One;/多列显示设置lb.MultiColum=true;lb.ColumnWidth=50;lb.Height=50;/向列表框里添加“中国”、“美国”等项,注意使用的是Items属性lb.Items.Add(“中国”);lb.Items.Add(“美国”);lb.Items.Add(“法国”);lb.Items.Add(“加拿大”);lb.SelectedIndexChanged+=new EventHandler(lb_SelectedIndexChanged);This.Controls.Add(lb);Void lb_SelectedIndexChanged(object sender, EventArgs e).第 10 页 教案纸3.3 工具栏(ToolStrip)控件ToolStripButton按钮工具栏(ToolStrip)控件属性说明Items集合属性,工具栏按钮的集合ImageScalingSize工具栏上图标的尺寸大小ShowItemToolTips是否在工具栏上显示提示,要显示提示,需要将其设置为true,并且还要在每个按钮的属性里设置提示文本事件说明ItemClicked单击工具栏时产生,此事件方法系统会传递ToolStripItemClickedEventArgs参数,该参数又一个ClickedItem属性,该属性就是你当前点击的工具栏上的某个按钮工具栏(ToolStrip)控件ToolStripButton按钮属性说明DisplayStyle按钮的显示样式,可以是文本样式、图片样式等Image设置按钮上的图标ToolTipText设置该按钮上显示的提示文本事件说明Clicked单击工具栏此按钮时触发第 11 页教案纸3.4 状态栏(StatusStrip)控件属性说明Items集合属性,状态栏中项的集合RenderMode状态栏的样式Width状态栏的宽度ShowItemToolTips设置是否显示提示信息事件说明ItemClicked点击面板项时激发p Private void TestForm_Load(object sender,EventArgs e)this.myStatusStrip.Item0.Text=“用户:perry”;this.myStatusStrip.Item1.Text=DateTime.Now.ToShortDateString(); 3.5 树视图(TreeView)控件属性说明Nodes集合属性,存放所有树节点SelectedNode当前数中选中的节点ImageList为数关联的图片集合,用来为树节点添加图标事件说明AfterExpand树节点展开后激发的事件AfterSelected树节点被选中后激发的事件,是数控件的默认事件树视图(TreeView)控件-Nodes属性说明Count集合内元素的个数Item用索引器的方式访问集合内元素方法说明Add向集合加入一个元素,或者用AddRange方法可以一次性加入多个元素Contains判断集合中是否包含某元素Clear清除集合元素Insert向集合插入元素Remove从集合删除元素,参数是对象类型,还有个方法RomoveAt按序号删除元素第 12 页 教案纸p 要注意:树的每个节点是TreeNode对象,而TreeNode也有集合属性Nodes,这样才构成一级一级的向下组织。p 使用窗体设计器,步骤如下:n 打开Windows项目,n 从工具箱拖入一个树形控件,并且找到Nodes属性进行设置n 编辑树节点n 运行4 高级控件4.1 创建菜单主菜单:固定在软件的上侧,在VS.NET里面用MenuStrip类创建快捷菜单:点击鼠标右键时弹出,又叫上下文快捷菜单,在VS.NET中用ContentMenuStrip类创建。 主菜单 快捷菜单n 主菜单p 使用窗体设计器设计菜单基本上不用编写代码,只需做两件事: 设置菜单的属性 设计菜单时点击右键调出菜单设计命令MenuStrip的重要属性属性说明ImageList设置菜单所需要的图片列表,可以用来给菜单项定制图标Items主菜单项集合ShowItemToolTips是否为菜单显示提示信息,提示信息需要设置菜单项的ToolTipText属性ShortcutKeys获取或设置与菜单项关联的快捷键RenderMode修改菜单显示样式,选择不同的选项可以产生不同的外观 第 13 页 教案纸ToolStripMenuItem常用属性属性说明DropDownItems菜单项里面含有的子菜单项集合Checked设置菜单项为CheckBox样式Image设置菜单项前面的图标注意:创建一个主菜单,要先创建菜单栏,然后在菜单栏里面创建主菜单项,再在主菜单项里面创建子菜单及子菜单项。这里要特别注意,菜单栏的集合属性是Items,这个属性里面包含所有主菜单项,是ToolStripMenuItem类型的。而菜单项里还又一个集合属性DropDownItems,这个集合里面包含该菜单项的子菜单项,子菜单项一般以为ToolStripSeperator类型或ToolStripCombBox类型。代码示例 private void CreateMenu() MenuStrip m = new MenuStrip(); ToolStripMenuItem mfile = new ToolStripMenuItem(文件); /为菜单栏添加一个主菜单项 m.Items.Add(mfile); ToolStripMenuItem subOpenFile = new ToolStripMenuItem(打开); /定制子“打开”文件菜单点击事件 subOpenFile.Click += new EventHandler(subOpenFile_Click); /为主菜单项添加一个子菜单项 mfile.DropDownItems.Add(subOpenFile); this.Controls.Add(m); void subOpenFile_Click(object sender, System.EventArgs e) MessageBox.Show(点击了打开文件菜单!); 多媒体演示(略)第 14 页 教案纸n 上下文菜单p 其重要属性跟主菜单一样p RenderMode:修改菜单显示样式,选择不同的选项可以产生不同的外观n 建立上下文菜单的例子 void CreateContextMenu() ContextMenuStrip cm = new ContextMenuStrip(); cm.RenderMode = ToolStripRenderMode.System; cm.Items.Add(拷贝); cm.Items.Add(粘贴); cm.Items.Add(查找); /给Form窗体添加上下文菜单 this.ContextMenuStrip = cm; 4.2 多文档应用程序n 多文档应用程序的特点是:p 用户一次可以打开多个文档,每个文档对应不同的窗口p 主窗口的菜单会自动随着当前活动的子窗口的变化而变化p 可以对子窗口进行层叠、平铺等各种操作p 子窗体可以在多文档主窗口区域内定位、改变大小、最大化和最小化等n 多文档应用程序-MDI程序(Multiple Document Interface)n 单文档应用程序-SDI程序(Single Document Interface)属性说明MdiParent用于为子窗体设置关联的父窗体ActiveMdiChild用于获取当前活动的多文档界面子窗体ActiveControl返回活动子窗体中具有焦店的控件MdiList通过该值指示主窗体菜单项是否使用子窗体列表来填充事件说明Closed关闭子窗体或主窗体时激发该事件第 15 页 教案纸创建步骤:n 创建一个“MdiEdit”Windows应用程序项目,将主窗体的Name属性改为“MdiForm”,Text属性改为“多文档记事本”。n 添加子窗体,通过“项目”主菜单“添加新项”子菜单向本项目添加一个新的窗体。新的窗体的Name属性设置为“Document”,Text属性设置为“文档”。n 设置MdiForm窗体的属性IsMdiContainer为“True”,表示这个窗体为多文档应用程序的主窗体,它将作为子窗体的容器。然后给这个窗体添加一个“文件”主菜单,并在“文件”主菜单里添加“新建文档”、“退出程序”两个子菜单。n 像Document子窗体中添加一个RichTextBox文本控件,并设置该文本控件的Dock属性为“Fill”,此时该文本控件将填充整个子窗体n 为主窗体的“新建文档”菜单添加方法以打开子窗体private void toolStripMenuItem2_Click(object sender, EventArgs e) Document childForm = new Document(); /将子窗体的“父窗体”属性设置为主窗体,要注意这里 childForm.MdiParent = this; childForm.Show(); n 在子窗体的程序中添加“格式”主菜单和“字体”、“颜色”两个子菜单,并设置相应的处理代码 private void 字体ToolSt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论