C#程序设计简明教程-第4章-window窗体开发.ppt_第1页
C#程序设计简明教程-第4章-window窗体开发.ppt_第2页
C#程序设计简明教程-第4章-window窗体开发.ppt_第3页
C#程序设计简明教程-第4章-window窗体开发.ppt_第4页
C#程序设计简明教程-第4章-window窗体开发.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、考虑windows控件时主要考虑控件的属性和事件,事件一般对应有个方法,方法. 而属性一般为:名字,文字,外观,是否有效(选中),是否可视等等. 一、常用控件 1 单选按钮(RadioButton) 单选按钮也叫选项按钮,为用户提供从多个选项中选择一个选项的功能,因此单选按钮顾名思义是一种“多选一”的控件。,章节目录,上一页,下一页,第4章 window窗体开发,(1)RadioButton控件的常用属性 Checked属性 该属性用来设置或返回单选按钮是否被选中。 Text属性:显示文字 AutoCheck属性 如果AutoCheck属性被设置为true(默认),那么当选择该单选按钮时,将自

2、动清除该组中所有其他单选按钮。 (2)RadioButton控件的常用事件 Click事件 当单击单选按钮时,将把单选按钮的Checked属性值设置为true,同时发生Click事件。 CheckedChanged事件 当Checked属性值更改时,将触发CheckedChanged事件。,2 复选按钮(CheckBox) 复选框顾名思义可以同时选中多个选项,也就是说用户可以在窗口同时选中多个复选框,这是其和单选按钮的区别。 (1)常用的属性: Text属性:显示文字 Checked属性:该属性值用来设置或返回复选框是否被选中. CheckState属性 该属性用来设置或返回复选框的状态。 T

3、hreeState属性 该属性用来返回或设置复选框是否能表示三种状态 (选中,不选中,中间).(默认为false,只有两种状态),章节目录,上一页,下一页,(2)CheckBox控件的常用事件 CheckBox控件的常用事件有Click和CheckedChanged等,其含义及触发时机与单选按钮完成一致。,3.使用分组框控件(GroupBox) 分组框(GroupBox)控件也是一种容器类控件,在分组框控件内部的控件可以随分组框一起移动,并且受到分组框控件某些属性(Visible、Enabled)的控制。 在多数情况下不需响应分组框控件的事件。 需要修改的通常是分组框控件的Text或Font属

4、性。 例4-1 4-2 4-3,4 列表框(ListBox) ListBox控件为用户提供了选项的列表,用户可以从列表中进行选择输入。如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,它是一种规范输入的好工具。 (1). 列表框的常用属性、方法和事件P112-113 (2)基本事件 Click和DoubleClick,章节目录,上一页,下一页,常用方法: 若要在 ListBox 控件中添加或删除项,可使用 ListBox1.Items.Add(项) 或者在设计时使用Items属性向列表添加项。 .Items.Insert(位置,项) .Items.Clear ()或 .Items.R

5、emove(ListBox1.SelectedItem) 方法。 其中listBox1.Items.Count为列表框中的项目数,而listBox1.SelectedItems.Count为选中的项目数(多选时) listBox1.SelectedIndex为选中项的序号,值为-1时代表什么都没选 listBox1.Text;/listBox1.SelectedItem.Tostring()为选中项; 例4.4,5 组合框(ComboBox) 组合框是一个文本框和一个列表框的组合。与列表框不同的是列表框只能在给定的列表项中选择,而组合框除了可在给定的列表项中选择还可以直接在文本框中输入 有三种

6、不同的风格: 通过DropDownStyle属性设置 (1)下拉组合: DropDownStyle属性:DropDown,为文本框+下拉列表 (2)简单组合: DropDownStyle属性:Simple,为文本框+下拉列表,但列表框不展开收拢 (3)下拉式列表 DropDownStyle属性:DropDownList,只有列表框展开收拢,无文本框 常用属性和事件与列表框基本相同 如comboBox1.Items.Add增加项目 comboBox1.Items.Remove移走项目,日历控件,1.日历控件MonthCalendar 常用属性P118,如选中日期显示在标签中,可用 label1.

7、Text = monthCalendar1.SelectionStart.ToString(); 改变日历的显示日期,可用 monthCalendar1.SelectionStart =DateTime.Parse( textBox1.Text); ,例4.5 2.日历控件DateTimePicker 常用属性P119,还可以显示具体的时间,由Format属性设置 例4.6,时钟(计时)控件Timer,Timer控件主要的作用是每间隔一定时间就执行一段指定的代码。 (1)主要用到的属性: Enabled:主要是控制当前Timer控件是否可用,如: timer1.Enabled=false;不可

8、用 timer1.Enabled=true;可用 Interval:程序运行间隔的时间,如: Timer1.Interval=1000;主要是设置timer1_Tick事件的时间,单位为毫秒 (2)主要的方法与事件 Start()方法:开始启动Timer控件,如timer1.Start();它的作用与timer1.Enabled=true相当。 Stop()方法:停止使用Timer控件。如timer1.Stop ();它的作用与timer1.Enabled=False相当。 例4.7 红绿灯,二、菜单和工具栏 例4.8 1.菜单设计:下拉菜单MenuStrip控件 MenuStrip控件(Ma

9、inMenu控件)从工具箱的“菜单和工具栏”选项卡中拖动到窗体上,就会出现菜单编辑器,重要属性P124,基本事件Click (1) 添加主菜单 新建一个Windows应用程序,在工具箱中双击MenuStrip控件或者用鼠标拖放到窗体上,则在窗体的顶部将添加一个菜单,如图所示。,章节目录,上一页,下一页,(2) 添加子菜单 在图10-1中,单击菜单中“请在此输入”,输入该菜单项的名称为的为“文件”,建立文件子菜单项;然后在该菜单项的下方显示一个标注为“请在此输入”区域,一个位于该菜单项的右方显示标注为“请在此输入”区域,可以选择区域继续添加。 (3) 移动菜单项 选中要移动的菜单项,是用鼠标拖动

10、到相应的位置即可。,(4). 添加快捷键 在菜单文本中输入“ openFile = textBox1.Text; if (openFile != ) richTextBox1.LoadFile(openFile, RichTextBoxStreamType.PlainText);,下面是保存文件,string openFile; openFile = textBox1.Text; if (openFile != ) richTextBox1.SaveFile(openFile, RichTextBoxStreamType.PlainText);,下面是复制、剪切、粘贴等,richTextBox

11、1.Copy(); richTextBox1.Cut(); richTextBox1.Paste(); 下面是字体设置 richTextBox1.SelectionFont=new Font(黑体, richTextBox1.Font.Size); 下面是字号设置 richTextBox1.SelectionFont= new Font(richTextBox1.SelectionFont.FontFamily,28); 下面是颜色设置 richTextBox1.SelectionColor = Color.Red;,复习上次课主要内容,1.菜单MenuStrip控件 添加快捷键, 在菜单文本

12、中输入“,字体、字号、颜色: richTextBox1.SelectionFont=new Font(黑体, richTextBox1.Font.Size); richTextBox1.SelectionFont= new Font(richTextBox1.SelectionFont.FontFamily,28); richTextBox1.SelectionColor = Color.Red; 3.对话框openFileDialog, SaveFileDialog 4.弹出式菜单ContextMenuStrip 注意:某个控件绑定必须在ContextMenuStrip属性中绑定该控件才能用

13、,3 工具栏的设计ToolStrip控件 工具栏是Windows的标准特性,通过使用工具栏,能改善软件界面的布局,达到快速实现相应功能的目的。一般情况下,工具栏可以实现与菜单相似的效果。在.NET的C#中使用toolStrip类实现工具栏的设计。,(1) 工具栏的创建方法 建立一个Windows应用程序,创建相应的程序。在指定的窗体上添加工具栏步骤如下: 在“工具箱”中双击toolStrip控件,在窗体的顶部显示一个放置toolStrip的容器控件。然后可以插入标准项,或通过编辑项(edit item)添加工具栏按钮,并设计 toolStrip的属性,如添加各工具栏的Image,编写代码等.还

14、可以右击某个按钮,在弹出的菜单中选标签、分隔条等。 可以点击其上方的三角形进行插入标准控件, 在该控件中添加工具按钮。选中工具栏,在该属性” items” 中可以添加各种控件,单击添加按钮,弹出如图10-2所示的集合编辑器。在集合编辑器中添加按钮并设置相应的属性。,章节目录,上一页,下一页,图10-4 Toolstrip集合编辑器,每一个按钮都可以与普通按钮是一样的,主要事件是Click,双击它就可以写代码。 另外,菜单、工具栏中的控件,窗体上的按钮可以共用代码,相同功能的设置,只需在一个地方写代码就可以了,其它地方用到相同的代码,只需在事件Click中选择在此之前写好代码的其它控件或菜单的点

15、击事件方法即可。 给工具栏中的toolBarButton控件添加代码实现功能。,章节目录,上一页,下一页,ImageList控件与工具栏结合,是一个相同尺寸和颜色深度的图像集合 为ImageList控件添加图像的步骤: (1)在窗体上,添加 一个ImageList控件; (2)在属性窗口中,选择 Images属性; (3)单击 “”按钮,弹出 “图像集合编辑器”对话框。,设置工具按钮的图像 void Form1_Load(object sender, EventArgs e) /把ImageList控件赋值给工具栏的ImageList属性 toolStrip1.ImageList = imag

16、eList1; /给各个工具栏按钮的ImageIndex属性赋值 /为ImageList中的图像的索引 toolStripButton1.ImageIndex = 0; /第一个按钮图片的序号 toolStripButton2.ImageIndex = 1; toolStripButton3.ImageIndex = 2; /也可以直接用下面语句加载图片 toolStripButton1.Image = imageList1.Images0; toolStripButton2.Image = imageList1.Images1; ,29,例: 编写toolBar_ButtonClick事件

17、工具栏中按钮的事件不是通过具体按钮的单击实现的,是通过工具栏的单击事件实现的。通过下例描述。 根据工具栏中的按钮改变标签中的文字,如图10-3所示。,章节目录,上一页,下一页,图10-3 工具栏的使用,该题的工具栏单击事件的代码如下。 private void toolStripButton1_Click(object sender, EventArgs e) label1.Text = 滚滚长江东逝水,浪花淘尽英雄。是非成败转头空,几度夕阳红。; private void toolStripButton2_Click(object sender, EventArgs e) label1.Te

18、xt=春眠不觉晓,处处闻啼鸟,夜来风雨声,花落知多少。; private void toolStripButton3_Click(object sender, EventArgs e) label1.Text=少壮不努力,老大图悲伤。; ,章节目录,上一页,下一页,再声明一点: 工具栏中按钮往往实现和菜单中选项相同的功能,这种情况下,只需在一个地方(如菜单)写代码就可以了,其它地方(如工具栏按钮)用到相同的代码,只需在属性栏的事件选项卡中的Click事件选择在此之前写好代码的其它控件或菜单的点击事件方法即可。,章节目录,上一页,下一页,补充: 状态栏的设计 状态栏的创建 在C#.NET 2.0

19、版本中,用StatusStrip控件。 在Windows的应用程序中,利用设计器打开要创建状态栏的窗体。然后添加状态栏,添加过程如下: () 在工具箱的Windows选项中双击StatusStrip控件,在窗体上显示一个状态栏。 () 在StatusStrip控件的属性items中进行添加StripStatusLabel项 ()添加完上述项后,每一个StripStatusLabel项与标签label的用法一样 ()为了让两个StripStatusLabel之间分隔好看,可设每个StripStatusLabel的属性BordSide:left,章节目录,上一页,下一页,例如:在状态栏中显示时间

20、先加入Timer控件,并设置间隔时间及有效, 然后在Timer控件的事件中加入代码:,toolStripStatusLabel2.Text = DateTime.Now.ToLongTimeString();,三、通用对话框 这些按钮不直接在窗体显示,而在窗体下方专用板中。 用ShowDialog方法显示,一般要确认一下。 1. 打开文件对话框(OpenFileDialog) 在C中的选择文件对话框控件用OpenFileDialog,常用的属性P131. 例: if (openFileDialog1.ShowDialog () = DialogResult.OK ) MyRTBox.LoadF

21、ile (openFileDialog1.FileName ,RichTextBoxStreamType.PlainText ); MyStatus.Text = 打开文件; ,章节目录,上一页,下一页,2. 保存文件对话框( SaveFileDialog ) 在C中创建一个保存文件对话框是通过SaveFileDialog来实现的。下列代码是创建一个此类的对象: SaveFileDialog saveFileDialog1 = new SaveFileDialog ( ) ; 例:if (saveFileDialog1.ShowDialog () = = DialogResult.OK ) M

22、yRTBox.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); ,章节目录,上一页,下一页,3 字体对话框(fontDialog) 文本的显示要使用一定的风格,通过fontDialog的Font属性描述字体,通过FontStyle指定应用到文本的字体的样式,结合这两个属性描述文本的显示风格例: if (fontDialog1.ShowDialog()=DialogResult.OK) MyRTBox.SelectionFont = fontDialog1.Font;,章节目录,上一页,下一页,4.颜色对话框

23、对话框ColorDialog控件,(1)Color属性:该属性用来获取或设置用户选定的颜色。 (2)AllowFullOpen属性:该属性用来获取或设置一个值,该值指示用户是否可以使用该对话框定义自定义颜色。 (3)FullOpen属性:该属性用来获取或设置一个值,该值指示用于创建自定义颜色的控件在对话框打开时是否可见。 (4)AnyColor属性:该属性用来获取或设置一个值,该值指示对话框是否显示基本颜色集中可用的所有颜色。 例4.9,四 多窗体程序设计,Windows应用程序很少只由一个窗体组成,一般情况下一个应用程序均拥有很多个窗体。C#项目刚建立时只有一个名为Form1的窗体,要建立多

24、窗体应用程序应首先为项目添加窗体,添加窗体的方法如下: (1)单击工具栏上的“ ”按钮或执行【项目】【添加Windows窗体】命令,将会出现如图10-17所示的【添加新项】对话框。 (2)在该对话框的【模板】下面的列表框中选中【Windows 窗体】图标,在名称后面的文本框中输入窗体名,然后按【打开】按钮,即为应用程序添加了一个窗体。 例4.10 对话框窗体的特性,需要设置一下.,2. 多文档界面(MDI)应用程序设计,(1).窗体的实例化与显示 Form2 fm=new Form2() fm.Show(); 关闭:fm.Close(); (2) 不同窗体间的数据访问 在Designer.cs

25、文件中设控件为public,综合运用:例4.11,后面是补充的,补充(3)MDI应用程序的概念 MDI程序中的应用程序窗口称为父窗口,应用程序内部的窗口称为子窗口。,与MDI应用程序设计有关的属性、方法和事件 (1)属性 常用的MDI父窗体属性如下。 ActiveMdiChild属性:该属性用来表示当前活动的MDI子窗口,如果当前没有子窗口,则返回null。 IsMdiContainer属性:该属性用来获取或设置一个值,该值指示窗体是否为多文档界面(MDI)子窗体的容器,即MDI父窗体。 MdiChildren属性:该属性以窗体数组形式返回MDI子窗体,每个数组元素对应一个MDI子窗体。,菜单

26、合并,父窗体和子窗体可以使用不同的菜单,这些菜单会在选择子窗体的时候合并。如果需要指定菜单的合并方式,程序员可以设置每个菜单项的MergeOrder属性和MergeType属性。 (1)MergeOrder属性:该属性用来确定当两个菜单合并时菜单项出现的顺序,具有较低MergeOrder的菜单项会首先出现。 (2)MergeType属性:当合并的两个菜单的某些菜单项的MergeOrder属性值相等时,使用该属性可以控制这些菜单项的显示方式。,编写一个能够显示多个文本文件的多文档程序。程序设计时的MDI父窗口如图10-20所示,子窗口如图10-21所示。程序运行时的菜单如图10-22(a)和图1

27、0-22(b)所示。打开了多个文件后的程序运行界面分别如图10-22(c)和图10-22(d)所示。程序运行时【文件】【打开】命令将弹出一个打开对话框让用户选择一个文件打开。打开文件后【文件】菜单中多个一项【关闭】,执行它将关闭当前打开的文件,执行【文件】【退出】命令将退出应用程序。【窗口】菜单的前四项用来对子窗口进行相应的排列,【窗口】菜单中的【关闭所有子窗口】命令的作用是删除所有的子窗口,【窗口列表】用来列出打开的所有子窗体。,图10-20 父窗口设计界面,图10-21 子窗口设计界面,(a),(b),(c),(d),图10-22 程序运行时的菜单,10.4.1 模式对话框和非模式对话框

28、对话框可以分为模式对话框和非模式对话框两种。 模式对话框是指用户只能在当前的窗体进行操作,在该窗体关闭之前不能切换到其它窗体。 非模式对话框是指当前所操作的窗体可以切换。两者区别是在对话框被关闭之前用户能否在同一应用程序的其他地方进行工作。 C#的From类中,使用show方法实现非模式窗体显示。通常情况下,窗体的显示为非模式显示。如显示非模式窗体From2,代码如下: Form2 frm=new Form2(); frm.Show();,章节目录,上一页,下一页,模式窗体的显示通过ShowDialog方法实现,如在程序运行过程中,以下代码实现窗体的模式显示: Form2 frm=new Fo

29、rm2(); frm.ShowDialog(); 【例10-4】通过多窗体了解模式窗体显示和非模式窗体显示。如图10-5所示。 本例使用3个窗体了解模式窗体显示和非模式窗体显示。主窗体定义为Form1,标题为“欢迎使用本系统”,通过“说明”按钮实现Form3即标题为“系统说明”窗体非模式显示,即在运行过程中,可以通过鼠标点击和Form1之间切换;,章节目录,上一页,下一页,通过“登录”按钮实现运行过中Form2即标题为“使用密码登录”的窗体模式显示,不能通过鼠标点击和Form1之间切换。,章节目录,上一页,下一页,图10-11 多窗体显示,在窗体Form1为button1控件编写单击事件,实现

30、说明窗体Form3的非模式显示。代码如下: private void button1_Click(object sender, System.EventArgs e) Form3 frm=new Form3(); / 声明frm为From3 frm.Show(); / 非模式显示 ,章节目录,上一页,下一页,为窗体Form1中的button2控件编写单击事件,实现使用密码登录窗体Form2的模式显示。代码如下: private void button2_Click(object sender, System.EventArgs e) Form2 frm=new Form2(); frm.Sho

31、wDialog(); ,章节目录,上一页,下一页,为窗体Form2中的button1控件编写单击事件,实现密码判断,代码如下: private void button1_Click(object sender, System.EventArgs e) if (textBox1.Text=abcd) MessageBox.Show(您成功登录了本系统,提示); Application.Exit(); / 应用程序终止运行 else MessageBox.Show(您的密码有误,请重新输入!,提示); ,章节目录,上一页,下一页,10.5.2 消息框( MessageBox ) 消息框一般用于程序

32、运行过程中显示提示或信息。可以有不同格式的消息框。Windows应用程序中,为提高于用户的交互能力,消息框大量使用。C#中通过MessageBox类实现消息框的定义。 1. MessageBox类 该类提供了静态方法Show显示消息框,常用的有三种形式实现消息框的显示。 (1) 用于显示指定文本的消息框 格式如下:图10-12 显示文本的消息框 MessageBox.Show(“文本内容”);,章节目录,上一页,下一页,(2) 显示指定文本和标题的消息框 格式如下:图10-13 显示文本和标题的消息框 MessageBox.Show(“文本内容”, “消息框标题”); 其中第一个string参数用于显示文本信息,第二个string参数用于显示消息框的标题。在程序中编写代码如下: MessageBox.Show(大家晚上好!,问候); (3) 显示具有指定文本、标题和按钮的消息框 格式如

温馨提示

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

评论

0/150

提交评论