第五章Windows编程基础本章内容Windows和窗体的基本概念WinForm中的常用控件自定义方法本章学习目标能够熟练创建WinForm程序能够使用基本控件熟练设计窗体掌握使用窗体的消息框掌握自定义方法WinForm程序windows操作系统里的常用程序这种具有图形用户界面(GUI)的程序在C#中称为WinForm程序。怎样创建Windows程序WinForm:WindowsForm,用来开发Windows窗口程序的技术,无论是之前学的控制台程序,还是后面要学的ASP.Net都是调用.Net框架,因此所有知识点都是一样的。在VS中创建Windows应用程序的步骤:1、打开VS2、新建项目3、项目类型:VisualC#项目4、模板:Windows应用程序认识WinForm项目名称主程序文件,包含Main方法我们编写代码的文件解决方案名称窗体设计器代码文件,代码为VS自动生成Main方法位于Program.cs文件Windows程序的入口//Program.csnamespaceMyForm{staticclassProgram{……..staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());//决定哪个窗体首先被执行}}}Main方法,程序的入口VS自动生成一般不需要理会进一步认识窗体文件WinForms窗体有两种编辑窗口:窗体设计器窗口窗体代码编辑窗口为什么使用partialForexample:类A中有40个方法有10000多行代码都保存在A.cs中缺点:类中方法太多,阅读不方便,文件太大partialpartial定义:VS允许我们将一个类型(类、结构或者接口)分成几个部分,分别实现在几个不同的.CS文件中。partial是一个纯语言层的编译处理,不影响任何执行机制—事实上c#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类。用partial将同一个窗体的代码分开放在两个文件中:一个存放VS自动生成的代码一个存放我们自己编写的代码程序员编写的代码VS自动生成的代码//Form1.Designer.csnamespaceMyForm{partialclassForm1{//……privatevoidInitializeComponent(){//VS自动生成的代码this.ShowInTaskbar=false;this.Name=Form1;this.Text=Form1;this.TopMost=true;}}}运行时合到一起组成一个窗体文件怎样使用partial//Form1.csnamespaceMyForm{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}//我们编写的代码}}构造函数做一些初始化的工作编译器自动调用认识窗体类//Form1.csnamespaceMyForm{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}}}冒号表示继承Form类定义了窗体的基本属性和行为我们创建的窗体都继承自Form类Form类:预定义的窗体类Form1继承自FormWindows窗体应用程序由许多窗体和控件组成每个窗体和控件都拥有许多属性,方法和事件窗体的重要属性Name:窗体对象的名字,类似于变量的名字BackColor:窗体的背景色ControlBox:设置是否出现最大化、最小化和关闭按钮StartPosition:窗体第一次出现时的位置Text:窗体标题栏显示的文字BackgroundImage:设置窗体背景图片MaxmizeBox:设置最大化按钮是否有效MinimizeBox:设置最小化按钮是否有效为什么使用事件Windows系统中处处是事件:鼠标按下、鼠标释放、键盘键按下……Windows系统通过事件处理来响应用户的请求显示开始菜单我的电脑窗口打开事件事件响应的结果单击双击事件驱动我们需要做的:针对我们感兴趣的事件,编写相应的事件处理程序WinForm是事件驱动程序,就是说程序执行的任何动作都是事件,而我们编写的执行动作的代码都要完成在事件里。事件的执行要靠用户来触发(如点击鼠标,移动、拖拽窗体等)。编写事件处理程序编写事件处理程序的步骤:1、选中控件2、在“属性”窗口中单击3、找到事件4、生成事件处理方法5、编写处理代码事件处理程序分析//窗体的鼠标移动事件处理程序privatevoidForm1_MouseMove(objectsender,MouseEventArgse){this.Text=String.Format(捕捉到鼠标了!({0},{1}),e.X,e.Y);}添加事件处理程序:this关键字代表窗体本身鼠标的横纵坐标窗体标题栏显示的文字鼠标事件参数窗体的重要事件Load:窗体加载事件FormClosing:每当窗体关闭时,在关闭前发生MouseClick:鼠标单击事件MouseDoubleClick:鼠标双击事件MouseMove:鼠标移动事件KeyDown:键盘按下事件KeyUp:键盘释放事件……窗体有哪些事件?小结当鼠标在窗体上点击时,窗体的背景色改变:如果是红色,变成黄色如果是黄色,变成绿色否则变成红色提示:处理窗体的MouseClick事件利用Color类得到某种颜色:红色—Color.Red绿色—Color.Green黄色—Color.Yellow窗体的背景色:this.BackColor判断背景色:if(this.BackColor==Color.Red)//鼠标单击事件privatevoidForm1_MouseClick(objectsender,MouseEventArgse){if(this.BackColor==Color.Red){this.BackColor=Color.Yellow;}elseif(this.BackColor==Color.Yellow){this.BackColor=Color.Green;}else{this.BackColor=Color.Red;}}什么是控件控件在图形用户界面(GUI)中屏幕上的一种对象,用户可操作该对象来执行某一行为。Windows中的所有控件(在工具箱中)控件的分类单值控件:存放一个值如TextBox、Label........单列控件:存放一列的值如ComboBox、ListBox........表格控件:可以存放一张表如GridView........帮助控件:自己没有什么作用,但可以帮助其他控件ToolTip、HelpProvider......控件的分类菜单和工具栏控件:ContextMenuStrip、MenuStrip、ToolStrip......数据控件:DataSet......对话框控件:ColorDialog、FontDialog、OpenFileDialog......窗体基本控件标签按钮组合框列表框文本框窗体常用控件添加控件:标签(Label)Label属性FontNameText说明控件显示的文本字体样式控件名称控件显示文本窗体常用控件添加控件:文本框(TextBox)TextBox属性ReadOnlyPasswordCharNameTextMultiline说明控件是否只读作为密码框显示的字符控件名称控件显示文本文本框文本是否可以跨多行窗体常用控件添加控件:按钮(Button)Button属性VisibleEnabledNameText说明控件是否可见控件是否启用控件名称控件显示文本案例:用户登录设计privatevoidbutton2_Click(objectsender,EventArgse){clear();}privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text==string.Empty||textBox2.Text==string.Empty){MessageBox.Show(信息禁止为空!,登录提示);clear();return;}if(!textBox1.Text.Equals(admin)||!textBox2.Text.Equals(admin)){MessageBox.Show(用户名称或密码出错!,登录提示);clear();return;}else{MessageBox.Show(欢迎您登录本系统!,消息提示);clear();}}publicvoidclear(){textBox1.Clear();textBox2.Clear();textBox2.Focus();}作业设计一个计算圆的面积和周长的计算器。当输入半径值时,输出以该值为半径的圆的面积和周长,如图所示:窗体常用控件添加控件:分组框(GroupBox)GroupBox属性NameText说明控件名称控件上显示的文本窗体常用控件添加控件:单选按钮(RadioButton)RadioButton属性CheckedNameText说明单选按钮是否已被选中控件名称控件显示文本窗体常用控件添加控件:组合框(ComboBox)ComboBox属性DropDownStyleNameItems说明控制组合框的外观和功能,有三个选择项控件名称组合框中项的集合(每一项相当于一行)窗体常用控件控件命名规范:Camel(骆驼)命名法控件RadioButtonGroupBoxLabelTextBoxButtonComboBox例rdoMangrpMustlblNametxtAgebtnSubmitcboAddress前缀rdogrplbltxtbtncbo消息框提问窗体控件设计完成,我们要怎样完成用户填写报名信息后进行确认提示的功能?消息框消息框示例privatevoidbtnSubmit_Click(objectsender,EventArgse){stringname=txtName.Text;……stringmessage=姓名:+name+\n年龄:+age+\n性别:+sex+\n地址:+address;MessageBox.Show(message,确认信息);}把所有信息连接成一个完整的字符串提交按钮的Click(鼠标单击)事件用消息框显示这个字符串内容通过控件名.属性得到每个控件属性里的值消息框1.MessageBox.Show(显示的字符串);例MessageBox.Show(“姓名:李玉刚…”);MessageBox的4种形式2.MessageBox.Show(显示的字符串,标题字符串);例MessageBox.Show(“姓名:李玉刚…”,”确认信息”);消息框3.MessageBox.Show(消息框中显示的字符串,标题字符串,消息框按钮类型);例MessageBox.Show(message,”确认信息”,MessageBoxButtons.YesNo);MessageBox的4种形式4.MessageBox.Show(消息框中显示的字符串,标题字符串,消息框按钮类型,消息框图标);例MessageBox.Show(message,”确认信息”,MessageBoxButtons.YesNo,MessageBoxIcon.Information)小结Items是哪个控件的属性?有什么作用?Checked是哪个控件的属性?有什么作用?总结窗体的设计窗口和代码窗口各是干什么的?我们学习了哪些常用控件?至少说出3个窗体的常用事件。消息框有4种形式,最简单的参数有几个,代表什么?