|
《C#语言程序设计项目教程》第8章 窗体和常用控件写字字帖 |
|
|
第8章 窗体和常用控件本章导读:本章的主要内容是窗体和常用控件。然后通过项目“MyQQ的登录和注册窗体”为导向,三个任务(创建登录窗体、创 建用户注册窗体和编辑QQ主窗体)为驱动,学习有关窗体和控件的相关知识,主要是对窗体的常见属性和事件的设置,各类常用控件(文本类、选 择类、容器类等)的属性和事件的设置,本项目的完成为后一章节项目完成奠定基础。第8章 窗体和常用控件 ——任务一 创建登录窗体一 、任务描述:创建一个窗体应用程序,设置窗体的属性,如下图所示:窗体界面设计具体要求如下:1、更改窗体默认显示图标。2、修改窗体名称 。3、设置窗体背景图。4、窗体程序运行时窗体在屏幕居中显示。5、窗体不可最大化、不可拖动更改大小。一、任务描述:窗体事件设置具体要 求如下:1、窗体加载前询问是否显示,如下图所示,单击【确定】显示登录窗体。一、任务描述:窗体事件设置具体要求如下:2、单击登录窗体 右上角的关闭图标时,询问登录窗体是否关闭,如左图所示,单击【是】退出登录窗体,单击【否】则返回登录窗体。3、单击登录窗体时,显示如 右下图的消息框。二、知识准备:二、知识准备:1、添加和删除窗体创建一个Windows窗体应用程序后,默认有一个窗体。如果想向项目中 添加一个新窗体,可以在项目名称上单击鼠标右键,依次单击【Add】|【New Item】或【Windows Form】,打开如图所示 对话框。二、知识准备:1、添加和删除窗体选择【Windows Form】,在【Name】后输入窗体名称,然后单击【Add】按钮,即 可向项目中添加一个新的窗体。一个完整的Windows应用程序由多个窗体组成,项目启动时需要设置启动窗体。启动窗体是在Program .cs文件中设置的,改变Run方法的参数,可以达到设置启动窗体的效果。Application.Run(new Form1());/ /默认启动窗体是Form1可以通过修改Run里的参数来修改启动窗体。二、知识准备:2、窗体的属性窗体包含一些基本的组成要素,如图标 、标题、显示位置、背景颜色和背景图片等,这些要素的设置可以通过窗体的【属性】面板,也可以通过代码进行设置。下面来详细介绍窗体的常见 属性及属性设置方法。二、知识准备:2、窗体的属性添加一个窗体后,位于窗体左上角的图标是默认的图标,想要更换图标的话,可以修改【属性 】面板的Icon属性。(1)窗体的图标(2)窗体的标题窗体的默认标题名称是Form1、Form2, 以修改【属性】面板的Text属 性来修改窗体的标题。二、知识准备:2、窗体的属性可以通过StartPosition属性来设置窗体加载时的显示位置,StartPos ition属性一共有5个值,属性值及说明如下表所示:(3)窗体的显示位置窗体显示位置属性值及意义二、知识准备:2、窗体的属性可以通 过Size属性中的Width和Height设置窗体的宽和高。窗体的长和宽只能是整数。(4)窗体的大小(5)窗体的背景可以通过Bac kgroundImage属性设置窗体的背景图片。二、知识准备:3、窗体的显示与隐藏可以通过Show方法显示窗体。语法: Public void Show()(1)窗体的显示(2)窗体的隐藏可以通过Hide方法隐藏窗体。 Pu blic void Hide()二、知识准备:4、窗体事件Public EventHandler Load(1)Load事件(窗体 加载)Windows是事件驱动的操作系统,对Form类的任何交互都通过事件实现。下面介绍Form的常见事件:Load、Click和 FormClosing。窗体加载时将触发Load事件。语法:(2)Click事件(窗体单击)单击窗体时将触发Click事件。语法: Public EventHandler Click二、知识准备:4、窗体事件 Public event FormClosingEv entHandler FormClosing(3)FormClosing事件(窗体关闭)窗体关闭时将触发FormClosing事件 。语法:三、任务分析:1、窗体上主要控件的属性及功能如下表所示:窗体属性设置说明表四、任务实施:1、打开VS2010,创建一个名为 ”form”的窗体应用程序。2、按照表设置窗体的各种属性。设置窗体的属性的方法如下:(1)单击需要设置属性的窗体。(2)单开【属性 】面板,如右图所示。四、任务实施:2、按照表设置窗体的各种属性。设置窗体的属性的方法如下:(3)找到需要设置的属性,以设置窗体图标 为例,找到属性【Icon】,单击后面的 按钮,在跳出的对话框中找到图标,单击【确定】即可。某些属性只需要直接在后面的输入框中 输入属性值即可,例如Text、Name属性等。四、任务实施:3、为窗体添加Load事件。添加Load事件的方法通常是直接双击窗体。 还可以在属性面板中,单击 图标,找到【Load】进行双击。private void Form1_Load(object sende r, EventArgs e) { if (MessageBox.Show("是否查看登录窗体 ?", "消息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { } }四、任务实施:4、 为窗体添加FormClosing事件。添加FormClosing事件的方法是属性面板中,单击 图标,找到【FormClosing】 进行双击。private void Form1_FormClosing(object sender, FormClosingEve ntArgs e) { if (MessageBox.Show("是否退出登录?", "提示", Mess ageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes ) { } else { e.Cancel = true; } }四、任务实施:5、添加Click事件。添 加Click事件的方法是属性面板中,单击 图标,找到【Click】进行双击。private void Form1_Click(ob ject sender, EventArgs e) { MessageBox.Show("单击 了登录窗体!"); }四、任务实施:6、为窗体添加控件,如下图所示。有背景图片的窗体,添加控件后,控件的背景默认为白 色,会破坏整个背景图片的显示,这时候需要设置Lable标题的属性【BackColor】|【Web】|【TransParent】。修 改第一个文本框名字为:tb_name,第二个文本框名字为:tb_pad。没有设置TransParent属性设置TransParen t属性四、任务实施:7、当双击【登录】按钮,为【登录】按钮添加Click事件处理程序,默认的用户名:private void bu tton1_Click(object sender, EventArgs e) {if (tb_name.Text == "admin" && tb_psd.Text == "123456") { Form1 frm1 = new Form1();//实例化登录窗体 Form2 frm2 = new Form2(); frm1.Hide();//隐藏登录窗体 frm2.Show();//显示Form2窗体 } }四、任务实施:7、当双击【登录】按钮,为 【登录】按钮添加Click事件处理程序,默认的用户名:如左图所示输入用户名和密码,单击【登录】按钮时,显示如右图所示窗体2。设置密 码文本框显示密码字符为“”,且长度不超过6位。五、任务小结:Application.Run(new Form2());//修改启 动窗体是Form2(1)启动窗体是在Program.cs文件中设置的,改变Run方法的参数,可以达到设置启动窗体的效果,比如要设置 Form2先启动,则打开Program.cs文件中,修改如下:(2)设置输入密码显示为“”,且长度不超过6位:tb_psd.Pa sswordChar = '''';tb_psd.MaxLength = 6;第8章 窗体和常用控件 ——任务二 创建用户注册 窗体 一、任务描述:单击任务一中的“注册”按钮,弹出如左图所示的注册窗体。输入内容完整后,单击【注册】按钮,弹出如右图所示已填写 注册信息。二、知识准备:二、知识准备:1、文本控件Lable控件又叫标签控件,主要用于显示不能编辑的文本,标识窗体上的对象,例如注 册窗体中的“用户昵称”、“性别:”等都是标签控件。标签控件的显示文本默认是Lable1、Lable2等。Lable控件常用属性如下 表所示:(1)Lable控件Lable控件常用属性二、知识准备:1、文本控件TextBox控件又称文本控件,主要用于获取输入数据, 有时候也可做显示文本,如注册窗体中的用户昵称的输入。TextBox控件的常见属性如下表所示:(2)TextBox控件TextBox 控件常用属性二、知识准备:1、文本控件RichTextBox控件又叫有格式的文本控件,主要用于显示、输入和操作带格式的文本。Ric hTextBox控件拥有TextBox控件的所有功能,还增加了显示字体、颜色和连接等功能。(3)RichTextBox控件1)在R ichTextBox控件中显示滚动条当RichTextBox控件的Multiline属性为“true”时,表明当文本内容很多时,可 以显示滚动条。二、知识准备:1、文本控件(3)RichTextBox控件1)在RichTextBox控件中显示滚动条RichTex tBox控件的ScrollBars属性值及意义二、知识准备:1、文本控件(3)RichTextBox控件2)在RichTextBo x控件中设置文本属性在RichTextBox控件中可以设置显示文本的字体、大小等属性。 例如:richTextBox1 .SelectionFont = new Font("楷体",12,FontStyle.Bold); richTextBox1.S electionColor = System.Drawing.Color.Red;表明设置显示的文本格式为楷体,12号大小,加粗, 颜色为红色。颜色为红色加粗12号字体二、知识准备:1、文本控件(3)RichTextBox控件3) 在RichTextBox控件中 显示为超链接样式richTextBox1.Text = "欢迎光临学校主页:http://www.cqbi.edu.cn";显示w eb连接http://www.cqbi.edu.cn彩色带下划线形式。4)在在RichTextBox控件中设置段落格式richTe xtBox1.SelectionBullet = true;设置控件中的内容以项目符号列表的格式排列。二、知识准备:1、文本控件( 4)Button控件Button控件也叫做按钮控件,用户通常可以通过单击按钮来执行某些操作。Button控件最常用的属性是Text 属性。例如:btn_regist.Text=”注册”。 Button控件的常见设置如下:二、知识准备:1、文本控件(4)Butto n控件1)设置按钮为窗体的“接受”按钮如果希望直接按下【Enter】键来触发按钮的Click事件,需要设置该按钮为“接受”按钮,需 要在窗体加载时(Load事件)进行如下设置:this.AcceptButton=btn_regist;按钮名称2)设置按钮为窗体的 “取消”按钮取消按钮相当与是当用户按下【ESC】键后触发的按钮,需要在窗体加载时(Load事件)进行如下设置:this.Cance lButton = btn_cancle;按钮名称二、知识准备:2、选择类控件(1)RadioButton控件1)判断RadioB utton控件是否被选中RadioButton控件又称为单选按钮控件,主要为提供两个或多个互相排斥的选项集,例如性别的选择。Rad ioButton控件的常见用途:当RadioButton控件的Checked属性为true时表明控件被选中。2)选中状态更改当Ra dioButton控件选中状态发生更改时,引发控件的CheckedChanged事件。二、知识准备:2、选择类控件(2)Check Box控件1)判断CheckBox控件是否被选中CheckBox控件又称为复选框控件,提供有多个选项的选择,例如兴趣爱好。Chec kBox控件的常见用途:当CheckBox控件的CheckState的属性为Checked时表明控件被选中,为unChecked时 表明控件未被选中。2)选中状态更改当CheckBox控件选中状态发生更改时,引发控件的CheckStateChanged事件。二、 知识准备:2、选择类控件(3)NumericUpDown控件NumericUpDown控件又叫做数值选择控件,是显示和输入数值的控 件。该控件有一个上下箭头,可以通过单击上下箭头来对数值进行增加和减少,也可以直接输入。NumericUpDown控件属性二、知识准 备:2、选择类控件(4)ListBox控件ListBox 控件又称列表框控件,它显示一个项目列表供用户选择。在列表框中,用户一次可 以选择一项,也可以选择多项。ListBox 控件常用属性二、知识准备:2、选择类控件(5)ComboBox控件ComboBox控件 又称下拉组合框控件,结合了TextBox控件和ListBox控件的功能,用于在下拉了组合框中显示数据。获取ComboBox控件中选 中的数据,可以取ComboBox控件的SelectedItem属性获得。其大多数属性跟TextBox控件和ListBox控件的属性 一致。二、知识准备:3、分组类控件(1)Panel控件Panel控件又称为容器控件,主要用于为其他控件提供可识别分组,可以有滚动条 。Panel控件最常用的方法就是show方法,show方法可以显示控件。(2)GroupBox控件GroupBox控件又叫分组框控 件,主要功能是按照分组来细分窗体的功能。例如个人基本信息、爱好分组。GroupBox控件总是显示边框,也可以显示标题,但是没有滚动 条。二、知识准备:4、PictureBox控件PictureBox控件又称为图片控件。PictureBox控件常用属性三、任务分析 :因为单击【浏览】按钮时,要弹出对话框选择头像图片,所以还应该添加一个OpenFileDialog控件。1、分析用户注册界面的控件 构成,如下图所示:三、任务分析:2、窗体上主要控件的属性及功能如表所示:控件属性功能说明表四、任务实施:1、打开任务一中建立的窗体 应用程序,添加一个名为regist的新窗体。2、构建如右图所示的窗体界面。首先应该添加一个GroupBox控件,设置TextBox 属性为“个人基本信息”,其余所有的控件添加在GroupBox控件中。四、任务实施:3、双击【浏览】按钮,添加Click事件处理程序 如下: private void button1_Click(object sender, EventArgs e) {//实例化对话框控件OpenFileDialog dlg = new OpenFileDialog();//设置对话框标题dl g.Title = "选择相片文件";四、任务实施:3、双击【浏览】按钮,添加Click事件处理程序如下: //如果单击对话框的“ 确定”按钮 if(dlg.ShowDialog() == DialogResult.OK) { //设置PictrueBox的ImageLocation属性 thi s.imgPhoto.ImageLocation = dlg.FileName; } }单击“ 确定”显示图片的绝对路径对话框中选中图片的路径四、任务实施:4、为名为cbProvince的ComboBox控件添加Selecte dValueChanged事件处理程序,因为省份很多,下面以“北京”省为例说明。//如果选择了“北京”if(this.cbProv ince.SelectedIndex == 0) { cbCitys.Items.C lear(); cbCitys.Items.Add("海淀区"); cbCitys .Items.Add("丰台区"); cbCitys.Items.Add("房山区"); cbCitys.Items.Add("怀柔区"); cbCitys.Items.Add("西城区" ); cbCitys.SelectedIndex = 0; }“北京”是第1个选项,所以索引为0清空 下拉组合控件里的所有选项为下拉组合控件添加新选项默认被选中的是第1项(索引为0)四、任务实施:5、添加一个名为msg的新窗体,界面 布局如下图所示,用于显示用户注册信息:RichTextBox控件四、任务实施:6、双击【注册】按钮,添加【注册】按钮的Click事 件处理程序:private void btn_regist_Click(object sender, EventArgs e) { //接受昵称 string name = tb_name.Text; //接受性别 string sex = rb_f.Checked ? rb_f.Tex t : rb_m.Text; //接受年龄 string age = numericU pDown1.Value.ToString (); //接受籍贯 string pro vince = cbProvince.SelectedItem.ToString (); province += cbCitys.SelectedItem.ToString ();四、任务实施:6、单击【注册】按钮,添加【注册】按钮的Cl ick事件处理程序://接受爱好 string interesting = "";if (cb_bike.CheckState= =CheckState.Checked) { interesting = "骑 车"; }if (cb_bike.CheckState == CheckState.Checked) { interesting += "、跑步"; } if (cb_bike.CheckState == CheckState.Checked) { interesting += "、唱K"; }if (cb_bike.Chec kState ==CheckState.Checked) { interest ing += "、游泳"; }if (cb_bike.CheckState == CheckState.Ch ecked) { interesting += "、网球"; }四、任务实施:6、单击【注册】按钮,添加【注册】按钮的Click事件处理程序: //保存个性说明 string description = richTextBox1.Text; //保存 所有信息string msg= name+"\r\n"+age+"\r\n"+sex+"\r\n"+province+"\r\n" +interesting+"\r\n"+description+"\r\n";}四、任务实施:7、单击修改【注册】按钮的Click 事件处理程序,实现窗体之间的数据传递。通过构造函数从主窗体regist向msg窗体传值,步骤如下: //实例化注册信息显示窗体,利 用构造函数参数传递数据 msg message = new msg(msg); mes sage.Show(); message.Owner = this;(1)在步骤6中的【注册】按钮的Clic k事件处理程序后加入如下代码:Msg是“已注册用户信息”窗体名称显示窗体public partial class msg : Fo rm {//通过构造函数在窗体间传递信息 public msg(string transfmsg) { InitializeComponent(); this.textBox1.Tex t = transfmsg; } } (2)在窗体msg中,修改构造函数如下:四、任务实施:8、单击下图中的【注册 用户】按钮,为其添加Click事件处理程序,设置显示【用户注册】窗体:private void label3_Click(obje ct sender, EventArgs e) { regist rg = new regis t(); rg.Show(); }显示“用户注册”窗体四、任务实施:9、单击如左图中登录窗体上 的【注册用户】按钮,弹出【用户注册】窗体,输入完用户信息后,单击【注册】按钮,弹出【已注册用户信息】窗体,如右所示。五、任务小结: 1、窗体之间的数据传递,可以通过构造函数从主窗体传递给其他窗体。2、可以通过ListBox控件的Items属性里的Add方法和Re mvoe方法为ListBox控件添加或删除项目。第8章 窗体和常用控件 ——任务三 编辑QQ主窗体 一、任务描述:修改任务一中 的“QQText”窗体,为其添加TabControl控件和StatusStrip控件,如左图所示,单击【加载】按钮后,显示加载进度 条,如下图所示:单击“加载”二、任务准备:1、TabControl控件TabControl控件又叫选项卡控件,它包含多个选项卡,可 以把窗体分成多页,使窗体的功能划分成多个部分,例如我们经常用的QQ面板上就用到 TabControl控件控件,如图所示。TabCo ntrol控件包含TabPage选项卡页。TabControl控件的TabPages属性表示所有TabPage的集合。下面介绍Ta bControl控件的的常用设置。二、任务准备:1、TabControl控件1)单击TabControl控件右边的标签下的【Add Tab】和【Remove Tab】可以直接添加或删除一个TabPage。(1)添加和移除选项卡添加和移除选项卡有以下两种方式:二 、任务准备:1、TabControl控件2)以编程方式添加或删除一个TabPage:(1)添加和移除选项卡添加和移除选项卡有以下两 种方式:新增选项卡:string Title = "新增选项卡";//新增选项卡名称TabPage mytabpage = new TabPage(Title);//实例化新增选项卡tabControl1.TabPages.Add(mytabpage);//添 加新增选项卡到控件中删除选项卡:tabControl1.TabPages.Remove(tabControl1.SelectedT ab);被选中选项卡二、任务准备:2、StatusStrip控件StatusStrip控件又称为状态栏控件,一般处于窗体的最底部, 用于显示窗体上的对象的相关信息等。StatusStrip控件包含ToolStrpStatusLabel、ToolStrpDropD ownButton、ToolStripProgressBar控件等,如图所示:二、任务准备:3、MenuStrip控件MenuSt rip控件又称为菜单控件,支持多文档界面、菜单合并、工具提示和溢出。从工具箱中拖曳MenuStrip控件到窗体中,在“Typw H ere”中直接输入“文件(&F)”,则显示如图所示“文件(F)”,这里的“&”符号被识别为确认快捷键的符号。二、任务准备:3、Me nuStrip控件创建完整菜单如左图所示:单击【文件】,在其下方的子菜单中输入如右图的子菜单,例如“新建(N)”则输入新建(&N) 。运行窗体应用程序,当按下组合键“ALT+F”时打开【文件】的子菜单。在使用菜单中的快捷键时,首先要选择主菜单,在弹出下拉列表后, 才能通过快捷键访问子菜单。二、任务准备:4、ToolStrip控件ToolStrip控件又称为工具栏控件。例:在 “我的电脑”窗体 中,添加一个ToolStrip控件显示当前系统的时间。1)从工具箱中拖曳ToolStrip控件到窗体中,如图设置ToolStrip 控件在窗体中的位置。二、任务准备:4、ToolStrip控件2)单击ToolStrip控件右边的下拉箭头,可以看到如图所示的8种不 同类型:Button,Lable,SplitButton,DropDownButton:,Separator,ComboBox,T extBox和ProgressBar。二、任务准备:4、ToolStrip控件单击ToolStrip控件右边下拉菜单中的【Edit Items】,打开如图的对话框:二、任务准备:4、ToolStrip控件选择【Button】,单击【Add】按钮,添加3个too lStripButton。单击右边属性窗口中的【Image】后的按钮,打开如图所示选择图像对话框:二、任务准备:4、ToolStr ip控件单击【Import】按钮,选择作为toolStripButton的图片后,单击【OK】即可。为上面的3个toolStrip Button添加图片后如图所示:二、任务准备:5、ImageList控件public void Add(Image value)I mageList控件又叫存储图像控件,主要用于存储图像资源。 ImageList控件的主要属性是Images,它包含关联控件将要使 用的图片,每个图片可以通过索引值或键值来访问,imageList1.Images[index]。 1)在ImageList控件 中添加图像,其语法是:例如:imageList1.Add(image); //image是一个Image对象。2)在ImageLi st控件中删除图像,其语法是:public void RemoveAt(int index)//index表示要移除图像的索引3) 移除所有图像,用Clear()方法。三、任务分析:1、“QQTest”窗体的上方是一个TabControl控件,包含3个TabPa ge,每个TabPage由图片和文字组成。窗体下方是一个StatusStrip控件,有StatusLable显示“QQ在线”几个字 ,有ProgressBar显示进度条。2、每个TabPage由图片和文字组成,应该添加一个ImageList控件来存放显示的图片。 四、任务实施:1、打开任务一窗体应用程序,打开Form2窗体。2、按照下图布置界面。四、任务实施:添加一个ImageList控件, 单击如左图所示ImageList控件右边的标记,单击“Choose images”,打开如右图所示的对话框,单击【Add】按钮选择 所需要添加的图片(也可以单击【Remove按钮删除选中的图片】),图片签名的数字“0,1,2”是图片的索引,对应图片的位置,然后单 击【OK】按钮即设置好ImageList控件。3、定义3个对象四、任务实施:private void Form2_Load(obj ect sender, EventArgs e) { tabControl1.ImageLis t = imageList1; // TabPage的图片索引 ta bPage1.ImageIndex = 0; // TabPage的文本 tabPage1.Text = "联系人"; tabPage2.ImageIndex = 1; tabPage2.Text = "空间"; tabPage3.ImageIndex = 2; tabPage3.Text = "对话"; //工具栏的设置 toolStripStatusLabel1.Text = "QQ在线"; }4、在Form2窗体的Load事件中设置TabControl控件:四、任务实施:5、设置StatusStrip控件。如左图所示单击StatusStrip控件右边的标签,单击“Edit Items”,打开如右图对话框。在下拉列表框中选择ToolStrpStatusLabel和ToolStripProgressBar,单击【Add】按钮,添加到状态栏控件中。四、任务实施:6、双击【加载】按钮,创建其Click事件处理程序,设置进度条的显示的参数。private void button1_Click (object sender, EventArgs e) { //进度条最小值 toolStripProgressBar1.Minimum = 0; //进度条最大值 toolStripProgressBar1.Maximum = 5000; //进度条变化速度 toolStripProgressBar1.Step = 2; for (int i = 0; i < 5000; i++) { //执行进度条的变化 this.toolStripProgressBar1.PerformStep(); } }谢谢观看 |
|
|
|
|
|
|
|
|
|
|