第四章窗体一、windows窗体简介我们经常会通过显示属性窗口来设置计算机屏幕显示效果,如分辨率、背景色等。图1即为设置外观效果的界面。图1显示属性实际上我们每天都接触不同的windows窗体,而且窗口上的元素也通常会重复出现,如一些文本框、按钮或下拉列表框等。这些元素均为GUI界面的设计元素,对于程序员而言,我们不需要化时间去独立编写这些元素,而只要根据界面需要选择合适的元素搭建即可。windows窗体(图2所示)也称WinForms,开发人员可以使用WinForms创建用户界面,并使用任何一种.NET支持的语言编写相关的功能。图2Windows窗体windows窗体的特点简单而强大改善了接口和基类IntelliSense新的管理数据提供程序安全灵活的控件通晓数据向导创建WinForms应用程序选择“开始”→“程序”→“MicrosoftVisualStudio.NET2005”→“MicrosoftVisualStudio.NET2005”,如图3所示。图3起始页新建一个C#为模板的windows应用程序。打开后如图4所示。图4“设计窗口”示例程序:usingSystem;//基础核心命名空间usingSystem.Drawing;//提供了大量绘图工具的访问权限usingSystem.Collections;//提供ArrayList,BitArray,Hashtable,Stack,StringCollection,StringTable类usingSystem.ComponentModel;usingSystem.Windows.Forms;//大量窗体和控件namespaceSampleProject{///summary///Form1的摘要说明。////summarypublicclassForm1:System.Windows.Forms.Form//从System.Windows.Forms.Form派生{///summary///必需的设计器变量.////summaryprivateSystem.ComponentModel.Containercomponents=null;publicForm1(){////Windows窗体设计器支持所必需的//InitializeComponent();////TODO:在InitializeComponent调用之后添加任何构造函数代码//}privatevoidInitializeComponent(){this.components=newSystem.ComponentModel.Container();this.Size=newSystem.Drawing.Size(300,300);this.Text=Form1;}///summary///清理所有正在使用的资源。////summaryprotectedoveridevoidDispose(booldisposing){if(disposing){if(components!=null){components.Dispose();}}base.Dispose(disposing);}[STAThread]//程序的入口点staticvoidMain(){Application.Run(newForm1());}}}二、windows窗体的常用控件C#中,常用的控件如图5、6所示:图5控件的类层次结构图6常用控件标签Label:用于显示用户不能编辑的文本或图象,起标注或说明作用。该控件不能获得焦点,可用于为其他控件创建访问键。表1标签的属性、事件与方法属性说明Text该属性用于设置或获取与该控件关联的文本Image指定标签要显示的图象方法说明Hide隐藏控件,调用该方法时,即使Visible属性设置为True,控件也不可见Show相当于将控件的Visible属性设置为True并显示控件事件说明Click用户单击控件时将发生该事件文本框:用于获取用户输入的信息或向用户显示文本。表2文本框的属性、事件与方法属性说明MaxLength可在文本框中输入的最大字符数Multiline表示是否可在文本框中输入多行文本Passwordchar机密和敏感数据,密码输入字符ReadOnly文本框中的文本为只读方法说明Clear删除现有的所有文本事件说明KeyPress用户按一个键结束时将发生该事件按钮:提供用户与应用程序的交互,单击按钮来执行相应的操作。表3按钮的属性、事件与方法属性说明Enabled确定是否可以启用或禁用该控件方法说明PerformClickButton控件的Click事件事件说明Click单击按钮时将触发该事件列表框:显示一个完整的选项列表,用户可以从中选取一个或多个选项。表4列表框的属性、事件与方法属性说明Items所有项SelectionMode选择模式SelectedIndex选中的索引号,从0开始Text当前选中项的文本SelectedItem选中的项SelectedItems所有被选中的项方法说明ClearSelected清除选中的选项事件说明SelectedIndexChanged选中时触发示例:添加选项privatevoidfrmUserAdd_Load(objectsender,System.EventArgse){this.lstCurrDeptName.Items.Add(软件部);this.lstCurrDeptName.Items.Add(硬件部);this.lstCurrDeptName.Items.Add(财务部);this.lstCurrDeptName.Items.Add(人事部);}组合框:结合文本框和列表框的特点,允许用户输入文本或选择某选项。表5组合框的属性、事件与方法属性说明DropDownStyleComboBox控件的样式MaxDropDownItems下拉区显示的最大项目数方法说明Select在ComboBox控件上选定指定范围的文本示例程序:privatevoidfrmUserAdd_Load(objectsender,System.EventArgse){……this.cboDesig.Items.Add(总裁);this.cboDesig.Items.Add(副总裁);this.cboDesig.Items.Add(首席执行官);this.cboDesig.Items.Add(经理);this.cboDesig.SelectedIndex=1;//默认的选择是总裁}privatevoidcboDesig_SelectedIndexChanged(objectsender,System.EventArgse){MessageBox.Show(选择的是第“+(this.cboDesig.SelectedIndex+1).ToString(),选择的信息);MessageBox.Show(选择的职务是“+this.cboDesig.Text,选择的信息);}三、消息框窗口用于显示消息,也可向用户请求消息。要显示消息,可用以下语法:MessageBox.show(“[消息内容]”);该方法返回一个枚举值表示你所按的按钮,具体的枚举值有Abort,Cancel,Ignore,No,None,OK,Retry和Yes等。下列程序片段演示了如何检查条件。if(MessageBox.Show(“保存文件”,“保存,MessageBoxButtons.YesNoMessageBoxIcon.Information,MessageBoxDefaultButton.Button1)==DialogResult.Yes){//保存文件所用的代码}表6消息框的重载方法重载方法Show(stringtext);Show(stringtext,stringcaption);Show(stringtext,stringcaption,MessageBoxButtonsbuttons);Show(stringtext,stringcaption,MessageBoxButtonsbuttons,MessageBoxIconicon);……四、应用程序示例1本例将创建一个windows界面(图7所示)应用程序。在初始状态下,这些控件是禁用的,“添加按钮可启动所有控件,“取消”按钮可清除控件中的值,“退出”按钮显示列表框选定的项目并退出应用程序,用户为组合框选择项目后,选定的项目将显示在消息框中。图7界面主要的代码privatevoidbtnExit_Click(objectsender,System.EventArgse)//退出按钮{stringstr=;for(intctr=0;ctr=this.lstCurrDeptName.SelectedItems.Count-1;ctr++)str+=\n+this.lstCurrDeptName.SelectedItems[ctr].ToString();MessageBox.Show(“选定的项目为\n+str);Application.Exit();}privatevoidbtnCancel_Click(objectsender,System.EventArgse)//取消按钮{this.txtEmpName.Text=;this.txtAddress.Text=;this.cboDesignation.Text=“经理;}privatevoidbtnAdd_Click(objectsender,System.EventArgse)//添加按钮{this.txtEmpName.Enabled=true;this.txtAddress.Enabled=true;this.cboDesignation.Enabled=true;this.lstCurrDeptName.Enabled=true;}//选择的项目显示在消息框中privatevoidcboDesignation_SelectedIndexChanged(objectsender,System.EventArgse){MessageBox.Show(“您已经选定了+this.cboDesignation.SelectedItem.ToString());}五、窗体容器简介窗体是可以容纳各种控件的容器,它提供了在用户和应用程序之间交换信息的方式,增强了应用程序的功能,在所有基于图形的操作系统和网页中均广泛使用了窗体。在.NET中,Form类层次如图8所示:图8Form类窗体类型SDI[单文档界面]MDI[多文档界面],如图9所示:图9MDI窗体模式窗口窗体的属性,如表7所示表7窗体属性属性属性ActiveFormHelpButtonCancelButtonKeyPreviewControlBoxMainMenuFormBorderStyleModalWindowStateShowInTaskbar窗体的方法与事件,如表8所示表8方法与事件方法ActivateLayoutMdiShowDialog事件ActivatedClosedClosingLoad窗体连接:一个应用程序可能有多个窗体,若要在当前窗体中显示另一窗体,可采用如下方法:[被调用的窗体类][窗体实例]=new[被调用的窗体类]();[窗体实例].Show();六、其他控件单选按钮:允许用户从多个选项中选择一个。每次只能选择一个。通常以组的形式出现。表9单选按钮属性和方法属性说明Checked确定是否已选定控件方法说明Focus将输入焦点移至控件图片框:可用于显示图像的Windows图片,支持显示位图、元文件、图标、JPEG、GIF或PNG等格式的图形,其常用属性和方法如表10所示。表10图片框的属性和方法属性说明Image用于指定图片框显示的图像。该图像可在设计或运行时设置SizeMode用于指定图像的显示方式。可以指定的各种大小模式包括AutoSize、CenterImage