1.1.4窗体容器简介SDI[单文档界面]MDI[多文档界面]1.1.5窗体的属性属性StartPo sition初始窗口位置CancelButton按下esc键后执行那个按钮。ControlBox确定系统是否 有图标和最大最小关闭按钮。FormBorderStyle指定边框和标题栏的外观和行为。HelpButton确定窗体 的标题栏上是否有帮助按钮。KeyPreview确定窗体键盘事件是否已经向窗体注册。MainMenuStrip 确定键盘激活和多文档合并。ShowInTaskbar确定窗体是否出现在任务栏中。WindowState 确定窗体的初始可视状态。1.1.5窗体的常用方法和事件方法Activate当窗体被激活时候发生M diChildActivate当MDI子窗体被激活时候发生事件ActivatedClosedClosin gLoad示例:显示另一窗体示例:显示另一窗体[被调用的窗体类][窗体实例]=new[被调用的窗体类]();[窗 体实例].Show();下面,在菜单的单击事件中写下如下的事件。privatevoidmenuItem3_Click(obj ectsender,EventArgse){Form2Mdichild=n ewForm2();Mdichild.MdiParent=this;Md ichild.Show();}当然,需要再建立两个窗体对象,form2和form3窗体示例1:在form2窗 体中进行如下操作单击“发送”按钮应用程序示例首先,将form2的comboBox1下拉框填充完毕后,增加load事件pr ivatevoidForm2_Load(objectsender,EventArgse){ comboBox1.SelectedIndex=0;textBox3.Text=" ";textBox1.Focus();}其次,添加form2的发送信息事件publ icvoidbutton1_Click(objectsender,EventArgse){ if(textBox1.Text==""||textBox2.Text==""||comboBox 1.Text==""){MessageBox.Show("姓名,或 者邮件,或者提交,信息禁止为空!","信息提示");}else {this.Hide();Form3childf orm3=newForm3(this.textBox1.Text,this.textBox2.Text,this.combo Box1.SelectedItem.ToString(),this.textBox3.Text); childform3.Show();}}最后关闭窗体 事件:privatevoidbutton2_Click(objectsender,EventArgse) {this.Close();}应用程序示例对于form3窗体而言,在系统初始事 件填写如下代码:publicpartialclassForm3:Form{private string_name;privatestring_emailId;privatest ring_subject;privatestring_feedBack;public Form3(stringvarName,stringvarEmail,stringvarSubject,string varFeedBack){InitializeComponent(); //在private变量中存储值this._name=varName; this._emailId=varEmail;this._subject=varS ubject;this._feedBack=varFeedBack;// 在列表框中放置值listBox1.Items.Add("姓名:"+this._name); listBox1.Items.Add("邮件地址:"+this._emailId); listBox1.Items.Add("信息主题:"+this._subject);listBox 1.Items.Add("反馈意见:"+this._feedBack);}private voidbutton1_Click(objectsender,EventArgse){ MessageBox.Show("感谢您输入的反馈!");this.Close(); }}示例2:在MDI父窗口中,子窗口如何彼此之间传递信息?代码见下示例3:如何防止重复打开子窗体啊? 方法:直接检测是否已经打开此MDI窗体//是否已经打开了?(用循环来判断)foreach(Formchi ldrenForminthis.MdiChildren){//检测是不是当前子窗体名称if(childre nForm.Name=="子窗体名称"){//是的话就是把他显示childrenForm.Visible= true;//并激活该窗体childrenForm.Activate();return;}} //下面是打开子窗体Form1childrenForm=newForm1();childrenForm.Mdi Parent=this;childrenForm.Show();childrenForm.WindowState =FormWindowState.Maximized;示例4:另一种窗体之间的传值技巧(一)——传单个值1、先在For m2中定义一个成员变量和一个属性如下:privatestringform2zhi=null;publicstri ngForm2ChuanZhi{get{returnform2zhi;}}2、再在Form3中定义 一个成员变量和一个属性如下:privatestringform3zhi=null;publicstringFo rm3ChuanZhi{set{form3zhi=value;}get{returnform 3zhi;}}3、双击btn_ChuanZhi在这个事件中写入以下代码(主要是显示Form3窗体和将Form2中的值 传过去):Form3form3=newForm3();form3.Form3ChuanZhi=form2zhi ;//将值传过去form3.Show();代码见下示例5:另一种窗体之间的传值技巧(二)——类保存任意值代码见下 Winform界面美化技巧1、从附件资料中确认有第三方动态链接库文件DotNetSkin.dll或者IrisSkin2.dl l,这两个文件是第三方开发设计的Winform界面美化的主要文件2、打开VS2005,展开工具箱,右键点击界面选择“添加选项卡 ”,新建选项卡“皮肤”Winform界面美化技巧4、在工具箱项窗口点击“浏览”,导入第三方动态链接库文件DotNetSkin .dll或者IrisSkin2.dll,两个dll都是一样的用,不同的是DotNetSkin.dll用的皮肤文件是.skn,Ir isSkin2.dll是用的.ssk3、在工具箱的新建选项卡“皮肤”里面单击右键,选择“选择项”,将展开选择工具箱项Winf orm界面美化技巧5、则在工具箱的皮肤选项卡内将出现皮肤控件。5、皮肤文件的基本用法是:拖拽任何一个皮肤控件到某个窗体上面, 进行如下的编码:namespaceporjectname{publicpartialclassForm1 :Form{publicForm1(){Initia lizeComponent();this.skinEngine1.SkinFile=".ssk"; 或是this.skinUI1.SkinFile=".skn"; } }}Winform界面美化技巧namespaceWindowsApplication1{publicpa rtialclassForm7:Form{publicForm7(){ InitializeComponent();//this.skinEngine1. SkinFile=".ssk";//stringpath=Envi ronment.CurrentDirectory+"\\skn皮肤\\LE4-DEFAULT.skn"; this.skinUI1.SkinFile=path;}}有关ssk文件和skn文件库,请参见附件文件 库中相关文件总结WinForms可用于Windows窗体应用程序开发Windows窗体控件是从System.Win dows.Forms.Control类派生的类标签控件用于显示用户不能编辑的文本或图像按钮控件提供用户与应用程序交互的最简便 方法组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目窗体提供了收集、显示和传送信息的 界面,是GUI的重要元素消息框显示消息,用于与用户交互privatevoidbutton1_Click_1(obje ctsender,EventArgse){textBox1.Enabled= true;textBox2.Enabled=true;comboBox1. Enabled=true;listBox1.Enabled=true; textBox1.Focus();}privatevoidbutton2_Click(o bjectsender,EventArgse){textBox1.Text= "";textBox2.Text="";listBox1.Selected Index=0;comboBox1.SelectedIndex=0;t extBox1.Focus();}privatevoidbutton3_Click(ob jectsender,EventArgse){stringstr=""; for(intctr=0;ctr<=this.listBox1.SelectedItems. Count-1;ctr++){str+="\n"+thi s.listBox1.SelectedItems[ctr].ToString();} //注意:此处需要将listBox1的selectionmodel设置为MultiExtended才会有效果。 MessageBox.Show("选定的项目是:\n"+str,"信息提示",MessageBoxButton s.OK);Application.Exit();}private voidcomboBox1_SelectedIndexChanged(objectsender,EventArgse) {stringstr=this.comboBox1.SelectedItem.To String();MessageBox.Show("您选择的职务是:\n"+str,"信息提示", MessageBoxButtons.OK);}============form2的设计========= ============privatevoidForm2_Load(objectsender,EventArgse) {comboBox1.SelectedIndex=0;te xtBox3.Text="";textBox1.Focus();} publicvoidbutton1_Click(objectsender,EventArgse){ if(textBox1.Text==""||textBox2.Text==""||co mboBox1.Text==""){MessageBox.Show ("姓名,或者邮件,或者提交,信息禁止为空!","信息提示");}else {stringstr="姓名:"+textBox1.Text +"\n邮件地址:"+textBox2.Text+"\n信息主题:"+comboBox1.Text+"\n 反馈意见:"+textBox3.Text;this.Hide(); Form3childform3=newForm3();childform3.Sh ow();}}================for m3的设计====================privatevoidForm3_Load(objectsender, EventArgse){Form2f2=newForm2(); f2.te}1、form2的设计privatevoidmenuItem2_Click(o bjectsender,EventArgse){Form001childfor m1=newForm001();childform1.MdiParent=this; childform1.Show();}privatevoidmenuIt em5_Click(objectsender,EventArgse){Appli cation.Exit();}privatevoidmenuItem3_Click(ob jectsender,EventArgse){Form003childform 3=newForm003();childform3.MdiParent=this; childform3.Show();}============================= ==========================2、form3的设计privatevoidbutton1_Click( objectsender,EventArgse){if(textBox1.Te xt==""||textBox2.Text==""||textBox3.Text=="") {MessageBox.Show("姓名,或者班级,或者邮件信息禁止为空!","信息提示 ");}else{ this.Hide();Form004child4=newForm004(textBox 1.Text,textBox2.Text,textBox3.Text);child4.Mdi Parent=this.MdiParent;child4.Show(); }}================================================== ==4、form4的设计privatevoidbutton1_Click(objectsender,EventArgs e){this.Close();}privat evoidbutton2_Click(objectsender,EventArgse){ Form003child3=newForm003();child3.Show(); this.Close();}=====================form 5的事件========================publicpartialclassForm005:Form {publicForm005(){InitializeC omponent();}privatestringzhi=null; publicstringzhi005{get{ returnzhi;}set {zhi=value;}} privatevoidForm005_Load(objectsender,EventArgse) {}privatevoidbutton1_Click(objects ender,EventArgse){this.zhi005=comboBox1.S electedItem.ToString();Form006form6=newForm006() ;form6.chuanzhi006=this.zhi005;form6. Show();}}================form6的事件================= ===========publicForm006(){InitializeComp onent();}privatestringzhi006=null; publicstringchuanzhi006{get {returnzhi006;}set {zhi006=value;} }privatevoidForm006_Load(objectsender,EventArgse) {label1.Text=chuanzhi006;}=== =========类文件publicpartialclassForm006:Form{p ublicForm006(){InitializeComponent(); }privatevoidForm006_Load(objectsender,E ventArgse){label1.Text=Class1.str; }}==============第一个privatevoidbutton1_Click(objectse nder,EventArgse){Class1.str=comboBox1.S electedItem.ToString();Form006form6=newForm006() ;form6.Show();}============== 第二个publicpartialclassForm006:Form{publicFor m006(){InitializeComponent();} privatevoidForm006_Load(objectsender,EventArgs e){label1.Text=Class1.str;} }--------------基于C#语言Windows程序设计第一章、Windows编程基础本章主要内容 介绍1.1windows和窗体1.2VisualStutio.netIDE简介1.3事件处理 CONTENT1.1Windows和窗体本章学习目标:理解Windows窗体使用基本控件如标签、文本、按钮、列 表框和组合框掌握窗体的常用属性和方法GUI界面控件1.1Windows和窗体各种控件属性放置控件的区域1.1 Windows和窗体WinForms应用程序可能存在多个窗体,用于获取用户输入的数据和向用户显示数据System.Win dows.Forms简单而强大改善了接口和基类IntelliSense新的管理数据提供程序安全灵活的 控件通晓数据向导1.1Windows和窗体1.1.2创建WinForms应用程序“开始”?“程序” ?“MicrosoftVisualStudio.NET2005”?“MicrosoftVisualStudio.NET 2005”创建WinForms应用程序6-2设计窗口1.1.2创建WinForms应用程序usingSy stem;usingSystem.Drawing;usingSystem.Collections;usingSyste m.ComponentModel;usingSystem.Windows.Forms;namespaceSamplePro ject{ /// ///Form1的摘要说明。 /// publicc lassForm1:System.Windows.Forms.Form { /// ///必 需的设计器变量. ///提供了大量绘图工具的访问权限基础核心命名空间ArrayList、BitAr ray、Hashtable、Stack、StringCollection和StringTable类大量窗体和控件从S ystem.Windows.Forms.Form派生VisualStudio.NET生成的代码1.1.2创建W inForms应用程序privateSystem.ComponentModel.Containercomponents= null;publicForm1(){ // //Windows窗体设计器支持所必需的 // Initiali zeComponent(); // //TODO:在InitializeComponent调用之后 添加任何构造函数代 码 //} 构造函数调用InitializeComponent()方法//下面代码见:Form1.Designer .cs文件privatevoidInitializeComponent(){this.components=n ewSystem.ComponentModel.Container();this.Size=newSystem.D rawing.Size(300,300);this.Text="Form1";}项目的容器创建WinForms 应用程序//////清理所有正在使用的资源。【下面代码:Form1.Designer.cs】/// protectedoverridevoidDispose(booldisposing){ if(disposing) { if(components!=null) { components.Dis pose(); } } base.Dispose(disposing);}释放系统资源1.1.2创建 WinForms应用程序//下面代码见:program.cs文件[STAThread]staticvoidMain() { Application.Run(newForm1());}程序的主入口点1.1.3WinForms中的常用 控件可视化界面组件统称为控件System.Windows.Forms.ControlSystem.Windo ws.FormsControlButtonBaseButtonCheckBoxLabelListControlCom boBoxListBoxTextBoxBaseTextBoxRadioButton1.1.3WinForms中的 常用控件标签按钮组合框列表框文本框标签属性说明Text该属性用于设置或获取与该控件关联的文本方法说明 Hide隐藏控件,调用该方法时,即使Visible属性设置为True,控件也不可见Show相当于将控件的Vi sible属性设置为True并显示控件事件说明Click用户单击控件时将发生该事件1.1.3WinFor ms中的常用控件标签控件按钮控件文本框控件列表控件组合框控件privatevoidlinkLabel1_Lin kClicked(objectsender,LinkLabelLinkClickedEventArgse){ linkLabel1.LinkVisited=true;Form2newform= newForm2();newform.Show();this.Hide(); }privatevoidlinkLabel2_LinkClicked(objectsender,LinkLabelL inkClickedEventArgse){//label2.Visible=t rue;label2.Show();}privatevoidl inkLabel3_LinkClicked(objectsender,LinkLabelLinkClickedEventArg se){label2.Visible=false;la bel2.Hide();}案例:窗口的打开和关闭文本框属性说明MaxLength可在文本框中输入 的最大字符数Multiline表示是否可在文本框中输入多行文本Passwordchar机密和敏感数据,密码输入字符 ReadOnly文本框中的文本为只读Text检索在控件中输入的文本方法说明Clear删除现有的所有文本 事件说明KeyPress用户按一个键结束时将发生该事件1.1.3WinForms中的常用控件按钮属性说 明Enabled确定是否可以启用或禁用该控件方法说明PerformClickButton控件的Click事件 事件说明Click单击按钮时将触发该事件1.1.3WinForms中的常用控件案例:用户登录设计priv atevoidbutton2_Click(objectsender,EventArgse){ clear();}privatevoidbutton1_Click(ob jectsender,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 ();}列表框属性ItemsSelectionModeSelectedIndexSelected ItemSelectedItemsText方法ClearSelected事件SelectedIndexChange d1.1.3WinForms中的常用控件使用列表框(1)privatevoidForm1_Load(obje ctsender,EventArgse){this.listBox1.Items .Add("软件部");this.listBox1.Items.Add("硬件部"); this.listBox1.Items.Add("财务部");this.listBox1.Ite ms.Add("人事部");}privatevoidlistBox1_SelectedIndexCh anged(objectsender,EventArgse){MessageBo x.Show("您选择的部门是:"+listBox1.SelectedItem.ToString()+",位列第"+listBox 1.SelectedIndex.ToString(),"信息提示");}使用列表框(2)privatev oidbutton1_Click(objectsender,EventArgse){ listBox1.Items.Clear();listBox1.Items.Add("软件部"); listBox1.Items.Add("硬件部");listBox1.Item s.Add("财务部");listBox1.Items.Add("人事部");} privatevoidbutton2_Click(objectsender,EventArgse) {listBox1.Items.Insert(2,"插入值");la bel1.Text="已经添加"+listBox1.Items.Count.ToString()+"条记录"; }组合框属性说明DropDownStyleComboBox控件的样式MaxDropDownItems 下拉区显示的最大项目数方法说明Select在ComboBox控件上选定指定范围的文本1.1.3WinForms 中的常用控件使用组合框privatevoidForm1_Load(objectsender,EventArgse ){this.comboBox1.Items.Add("财务部"); this.comboBox1.Items.Add("产品部");this.comboBox1.I tems.Add("销售部");this.comboBox1.Items.Add("生产部"); //默认的选择是"产品部"this.comboBox1.SelectedIndex= 1;this.comboBox2.Items.Add("财务部");thi s.comboBox2.Items.Add("产品部");this.comboBox2.Items.Ad d("销售部");this.comboBox2.Items.Add("生产部"); //默认的选择是"产品部"this.comboBox2.SelectedIndex=1; this.comboBox3.Items.Add("财务部");this.combo Box3.Items.Add("产品部");this.comboBox3.Items.Add("销售部" );this.comboBox3.Items.Add("生产部");//默认的 选择是"产品部"this.comboBox3.SelectedIndex=1;} 消息框窗口MessageBox.Show(“[消息文本]");消息框用于显示消息Abort,Cancel,Ignore, No,None,Ok,Retry和Yesif(MessageBox.Show(“保存文件”,“保存",Mes sageBoxButtons.YesNo,MessageBoxIcon.Information,MessageBoxDefa ultButton.Button1)==DialogResult.Yes){ //保存文件所用的代码 //保存后的M essageBox }1.1.3WinForms中的常用控件消息框窗口重载方法Show(stringtex t);Show(stringtext,stringcaption);Show(stringtext,stringc aption,MessageBoxButtonsbuttons);Show(stringtext,stringcapt ion,MessageBoxButtonsbuttons,MessageBoxIconicon);……private voidbutton1_Click(objectsender,EventArgse){ MessageBox.Show("嘿,这是简单提示!","信息提示");}privatevoid button2_Click(objectsender,EventArgse){D ialogResultresult=MessageBox.Show("嘿,这是问询提示!","问询提示",MessageBo xButtons.YesNo);if(result==DialogResult.Yes) {label1.Text="您选择了YES"; }else{lab el1.Text="您选择了NO";}}privatevoidbutton3 _Click(objectsender,EventArgse){DialogRe sultresult=MessageBox.Show("嘿,这是带有图标的问询提示!","问询提示",MessageBo xButtons.YesNoCancel,MessageBoxIcon.Question,MessageBoxDefaultBut ton.Button3,MessageBoxOptions.RightAlign);if(result ==DialogResult.Yes){label1.Text= "您选择了图标YES";}elseif(result==DialogRe sult.Cancel){label1.Text="您选择了图标取 消";}elseif(result==DialogResult.No) {label1.Text="您选择了图标NO"; }}应用程序示例解决方案资源管理器属性窗口工具箱应用程序示例privatevoid btnAdd_Click(objectsender,System.EventArgse){ }privatev oidbtnAdd_Click(objectsender,System.EventArgse){ this.txtEm pName.Enabled=true; this.txtAddress.Enabled=true; this.cboDesig nation.Enabled=true; this.lstCurrDeptName.Enabled=true;}privat evoidbtnCancel_Click(objectsender,System.EventArgse){ thi s.txtEmpName.Text=""; this.txtAddress.Text=""; this.cboDesign ation.Text=“经理"; }privatevoidbtnExit_Click(objectsender,Sy stem.EventArgse){ stringstr=""; for(intctr=0;ctr<=this.lstC urrDeptName.SelectedItems.Count-1; ctr++) str+="\n"+this.l stCurrDeptName.SelectedItems[ctr].ToString(); MessageBox.Show(“选 定的项目为\n"+str); Application.Exit();}应用程序示例privatevoidcboDes ignation_SelectedIndexChanged (objectsender,System.EventArgs e){ MessageBox.Show(“您已经选定了"+ this.cboDesignation.SelectedIt em.ToString());}在退出应用程序之前,使用MessageBox.Show()显示在str变量中存储选定项 的消息框图标系统按钮System.Windows.FormsControlScrollableControlConta inerControlForm标题栏控件1.1.4窗体容器简介privatevoidbutton1_C lick_1(objectsender,EventArgse){textBox1 .Enabled=true;textBox2.Enabled=true; comboBox1.Enabled=true;listBox1.Enabled=true; textBox1.Focus();}privatevoidbutt on2_Click(objectsender,EventArgse){textB ox1.Text="";textBox2.Text="";listBo x1.SelectedIndex=0;comboBox1.SelectedIndex=0; textBox1.Focus();}privatevoidbutto n3_Click(objectsender,EventArgse){string str="";for(intctr=0;ctr<=this.listBox1.Sel ectedItems.Count-1;ctr++){str+= "\n"+this.listBox1.SelectedItems[ctr].ToString(); }//注意:此处需要将listBox1的selectionmodel设置为MultiExtended才会 有效果。MessageBox.Show("选定的项目是:\n"+str,"信息提示",Messa geBoxButtons.OK);Application.Exit();} privatevoidcomboBox1_SelectedIndexChanged(objectsender,Ev entArgse){stringstr=this.comboBox1.Sele ctedItem.ToString();MessageBox.Show("您选择的职务是:\n"+s tr,"信息提示",MessageBoxButtons.OK);}============form2的 设计=====================privatevoidForm2_Load(objectsender,Ev entArgse){comboBox1.SelectedIndex=0; textBox3.Text="";textBox1.Focus(); }publicvoidbutton1_Click(objectsender,EventArgse ){if(textBox1.Text==""||textBox2.Text ==""||comboBox1.Text==""){Mess ageBox.Show("姓名,或者邮件,或者提交,信息禁止为空!","信息提示");} else{stringstr="姓名:"+tex tBox1.Text+"\n邮件地址:"+textBox2.Text+"\n信息主题:"+comboBox1. Text+"\n反馈意见:"+textBox3.Text;this.Hide(); Form3childform3=newForm3();ch ildform3.Show();}}======== ========form3的设计====================privatevoidForm3_Load(obje ctsender,EventArgse){Form2f2=newForm 2();f2.te}1、form2的设计privatevoidmenuIt em2_Click(objectsender,EventArgse){Form0 01childform1=newForm001();childform1.MdiParent= this;childform1.Show();}private voidmenuItem5_Click(objectsender,EventArgse){ Application.Exit();}privatevoidmenuIte m3_Click(objectsender,EventArgse){Form00 3childform3=newForm003();childform3.MdiParent= this;childform3.Show();}================== =====================================2、form3的设计privatevoidbut ton1_Click(objectsender,EventArgse){if( textBox1.Text==""||textBox2.Text==""||textBox3.Text=="" ){MessageBox.Show("姓名,或者班级,或者邮件信息禁止 为空!","信息提示");}else{ this.Hide();Form004child4=newForm 004(textBox1.Text,textBox2.Text,textBox3.Text); child4.MdiParent=this.MdiParent;child4.Show() ;}}======================================= =============4、form4的设计privatevoidbutton1_Click(objectsender ,EventArgse){this.Close();} privatevoidbutton2_Click(objectsender,EventArgse) {Form003child3=newForm003();chil d3.Show();this.Close();}============== =======form5的事件========================publicpartialclassFor m005:Form{publicForm005(){ InitializeComponent();}privatestringzhi=nul l;publicstringzhi005{get {returnzhi;}set{zhi=value;}}privatevoidForm005_Load(objectsender,EventArgse){}privatevoidbutton1_Click(objectsender,EventArgse){this.zhi005=comboBox1.SelectedItem.ToString();Form006form6=newForm006();form6.chuanzhi006=this.zhi005;form6.Show();}}================form6的事件============================publicForm006(){InitializeComponent();}privatestringzhi006=null;publicstringchuanzhi006{get{returnzhi006;}set{zhi006=value;}}privatevoidForm006_Load(objectsender,EventArgse){label1.Text=chuanzhi006;}============类文件publicpartialclassForm006:Form{publicForm006(){InitializeComponent();}privatevoidForm006_Load(objectsender,EventArgse){label1.Text=Class1.str;}}==============第一个privatevoidbutton1_Click(objectsender,EventArgse){Class1.str=comboBox1.SelectedItem.ToString();Form006form6=newForm006();form6.Show();}==============第二个publicpartialclassForm006:Form{publicForm006(){InitializeComponent();}privatevoidForm006_Load(objectsender,EventArgse){label1.Text=Class1.str;}} |
|