1Windows窗体界面设计1窗体、属性与事件2Windows窗体基本控件3菜单与工具栏4其他Windows窗体控件2本章教学目的介绍Windows窗体基本设计方法以及基本控件的用法。本章教学要求(1)掌握基本控件的属性设置方法以及常用属性;(2)掌握基本控件的常用事件处理方法;(3)掌握菜单与工具栏的用法;(4)了解其他内容。3先观察:界面设计举例141窗体的属性和透明显示利用Transparent和Parent属性,可以将Label放到PictureBox上透明显示,也可以将多个PictureBox重叠透明显示。举例2:(1)将label1、PictureBox1和PictureBox2重叠放到一个Panel控件内(2)设置label1、PictureBox1和PictureBox2控件的BackColor属性均为Transparent(3)在构造函数中,设置label1和PictureBox2的父控件为PictureBox1:label1.Parent=pictureBox1;pictureBox2.Parent=pictureBox1;则label1和PictureBox2相对于PictureBox1是透明的,而PictureBox1相对于窗体Form1是透明的。51.2单文档窗体(SDI)与多文档窗体(MDI)1.默认为单文档窗体(SDI),将窗体的IsMdiContainer属性设置为true,即可将该窗体变为多文档窗体(MDI)。2.MDI例子:(1)创建项目MdiExample(2)添加窗体Form2、Form3(3)将Form1的IsMdiContainer属性设置为True,然后添加菜单:(a)打开与关闭子窗口子菜单:打开Form2打开Form3关闭Form2关闭Form3(b)排列子窗口(子菜单:水平平铺、垂直平铺、层叠)(c)退出61.2单文档窗体(SDI)与多文档窗体(MDI)(4)添加“打开Form2”、“打开Form3”事件:privatevoid打开Form2ToolStripMenuItem_Click(……){Form2fm=newForm2();fm.MdiParent=this;fm.Name=Form2;fm.Show();}privatevoid打开Form3ToolStripMenuItem_Click(……){Form3fm=newForm3();fm.MdiParent=this;fm.Name=Form3;fm.Show();}不能省略,如果不设置,将其作为子窗体时,其Name属性默认为空字符串(String.Empty)71.2单文档窗体(SDI)与多文档窗体(MDI)(5)添加“关闭Form2”、“关闭Form3”事件:privatevoid关闭Form2ToolStripMenuItem_Click(……){Form[]mdiChildren=this.MdiChildren;foreach(FormfminmdiChildren){if(fm.Name==Form2)fm.Close();}}privatevoid关闭Form3ToolStripMenuItem_Click(……){Form[]mdiChildren=this.MdiChildren;foreach(FormfminmdiChildren){if(fm.Name==Form3)fm.Close();}}81.2单文档窗体(SDI)与多文档窗体(MDI)(6)添加子窗体排列事件:privatevoid水平平铺ToolStripMenuItem_Click(……){this.LayoutMdi(MdiLayout.TileHorizontal);}privatevoid垂直平铺ToolStripMenuItem_Click(……){this.LayoutMdi(MdiLayout.TileVertical);}privatevoid层叠ToolStripMenuItem_Click(……){this.LayoutMdi(MdiLayout.Cascade);}(7)添加“退出”事件:privatevoid退出ToolStripMenuItem_Click(……){Application.Exit();}(8)运行,观察效果。9实验中发现的问题回答问题:我希望知道程序是否执行到某处,但又不希望在设计窗体上显示,有哪些方法可以做到?答:方法1:在判断是否执行的地方设置断点。方法2:利用调试输出窗口输出相应信息。(1)选择菜单的“视图”“输出”,以便显示调试信息(2)利用调试信息测试执行情况。例如测试每次循环计算的结果:intsum=0;for(inti=0;i100;i++){sum+=i;System.Diagnostics.Debug.Print(第{0}次循环:{1},i,sum);}调试信息只在调试输出窗口中显示,不会在设计窗体上显示。在进行需要大量时间的后台操作时,这种方法很有用。102Windows窗体基本控件2.1控件中常用的属性和方法1.常用基本属性除了书上讲的属性外,还要注意以下属性的用法:1)(Name):指定控件的名称,它是控件在当前应用程序中的唯一标识,代码通过该属性来访问控件2)Enabled:决定控件是否可用,取值为true时可用,取值为false时不可用3)Anchor属性:保持控件与边框的距离不变4)Dock属性:让控件始终紧靠边框112.1控件中常用的属性和方法2.Anchor属性用法举例122.1控件中常用的属性和方法3.常用方法Focus方法:让控件获得焦点如果希望窗体一开始就让某个控件获得焦点,可以在窗体的Shown事件中实现各种控件都有自己常用的方法(后面会逐一介绍)132.2TextBox控件1.文本框控件常用的基本属性1)Text:表示文本框中显示的内容。2)MaxLength:用户可以键入的最多字符数。3)Multiline:是否显示多行内容。4)PasswordChar:输入密码字符时显示的符号。2.TextBox控件常用的基本事件TextChanged:文本框中的内容更改时触发。3.举例:在一个文本框中输入内容,在另一个文本框中同时显示142.3MaskedTextBox控件1.用途:通过掩码限制用户输入的信息。2.常用属性Mask属性:设置掩码3.常用事件TypeValidationCompleted事件4.举例:15privatevoidForm1_Load(objectsender,EventArgse){maskedTextBox1.ValidatingType=typeof(System.Int32);}privatevoidmaskedTextBox1_TypeValidationCompleted(objectsender,TypeValidationEventArgse){if(!e.IsValidInput){MessageBox.Show(请输入数字);}}162.4RichTextBox控件1.常用属性(1)SelectionFont表示当前选中文本或所要输入文本的字体、大小、效果等(2)SelectionColor表示当前选中文本或所要输入文本的颜色2.常用方法AppendText方法:添加文本信息3.举例:(RichTextBoxExample)172.5CheckBox控件1.三种状态2.常用属性Checked属性3.常用事件CheckedChanged事件182.6RadioButton控件1.特点:(1)单选(2)以各自所在的容器来划分组,如果在一个窗体上创建多个单选按钮组,可以使用GroupBox或者Panel控件作为容器。2.除了是单选外,其他用法与CheckBox用法相同。192.7ListBox控件1.用法及属性有些类似于CheckedListBox。2.常用属性1)Items:描述控件对象中的所有项2)MutiColumn:是否以多列的形式显示各项3)SelectionMode:None、One、MultiSimple、MultiExtended4)SelectedIndex:当前选定项的索引号5)SelectedItems:当前选定项3.常用事件SelectedIndexChanged:当SelectedIndex属性值更改时触发。4.举例:20图5-11选修课程更改窗体listBox1SelectionMode:MultiExtendedtextBoxAddbuttonDeletebuttonDeleteAllbuttonAdd2.7ListBox控件2121新建一个windows应用程序项目,添加一个ListBox控件和两个Button控件,设置属性如表所示。控件名控件类型属性名属性值listCountryListBoxSelectionModeMultiSimplebtnSelectAllButtonText全选btnUnSelectButtonText反选2222privatevoidbutton1_Click(objectsender,EventArgse){for(inti=0;ilistCountry.Items.Count;i++){listCountry.SelectedIndex=i;}}2323privatevoidbutton2_Click(objectsender,EventArgse){boolb;for(inti=0;ilistCountry.Items.Count;i++){b=!listCountry.GetSelected(i);listCountry.SetSelected(i,b);}}242.8CheckedListBox控件1.常用属性(1)Items属性:项的集合(2)Count属性:项的数目(3)CheckOnClick属性:首次单击时是否改变状态(4)MultiColumn属性:是否多列显示(5)CheckedItems属性:选中项的集合2.常用事件:SelectedIndexChanged事件3.例:(checkedListBoxExamlple)删除选中项:for(inti=checkedListBox1.CheckedItems.Count-1;i=0;i--){checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i]);}252.9ComboBox控件1.由两部分组合而成:一个文本框和一个列表框2.常用属性1)DropDownStyle属性:Simple、DropDown、DropDownList2)Items属性:与ListBox的Item属性用法相同3)SelectedItem属性:与ListBox的SelectedItem属性用法相同4)SelectedIndex属性:与ListBox的SelectedIndex属性用法相同5)SelectedValue属性(只有在数据绑定中才用此属性,第8章再讲)3.常用方法1)Add方法、Remove方法、Insert方法2)AddRange方法3)Clear方法4.常用事件:SelectedIndexChanged事件2626利用ComboxBox控件加载系统所有字体控件名控件类型属性名属性值comboFontComboBox默认button1ButtonText加载字体2727usingSystem.Drawing.Text;privatevoidbutton1_Click(objectsender,EventArgse){InstalledFontCollectionfontCollection=newInstalledFontCollection();for(inti=0;ifontCollection.Families.Length;i++){comboFont.Items.Add(fontCo