第9章 Windows窗体应用程序开发_第1页
第9章 Windows窗体应用程序开发_第2页
第9章 Windows窗体应用程序开发_第3页
第9章 Windows窗体应用程序开发_第4页
第9章 Windows窗体应用程序开发_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章Windows窗体应用(yìngyòng)程序开发共九十六页本章要点

Windows窗体开发基础常用Windows控件

Windows菜单设计(shèjì)工具栏与状态栏设计通用对话框编程共九十六页9.1Windows窗体编程

9.1.1WinForms概述(ɡàishù)控件可视化界面(jièmiàn)组件统称为控件共九十六页程序执行流程(liúchéng)控制模式:过程(guòchéng)控制模式(非图形用户界面应用程序的传统控制模式)事件驱动模式(Windows图形用户界面应用程序的控制模式)9.1.1WinForms概述共九十六页“开始(kāishǐ)”

“程序”

“MicrosoftVisualStudio.NET2008”

“MicrosoftVisualStudio.NET2008”9.1.1WinForms概述(ɡàishù)共九十六页9.1.1WinForms概述(ɡàishù)设计(shèjì)窗口共九十六页各种(ɡèzhǒnɡ)控件属性(shǔxìng)放置控件的区域共九十六页usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceWindowsApplication3{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}}}提供了大量绘图工具(gōngjù)的访问权限基础核心(héxīn)命名空间ArrayList、BitArray、Hashtable、Stack、StringCollection和StringTable类大量窗体和控件从

System.Windows.Forms.Form派生VisualStudio.NET生成的代码9.1.1WinForms概述共九十六页partialclassForm1{///<summary>///必需的设计(shèjì)器变量。

///</summary>privateSystem.ComponentModel.IContainercomponents=null;

构造(gòuzào)函数调用

InitializeComponent()

方法

#regionWindows窗体设计器生成的代码

///<summary>///设计器支持所需的方法-不要

///使用代码编辑器修改此方法的内容。

///</summary>privatevoidInitializeComponent(){this.SuspendLayout();////Form1//this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(333,266);this.Name="Form1";this.Text="Form1";this.ResumeLayout(false);}#endregion项目的容器9.1.1WinForms概述共九十六页///<summary>///清理所有正在使用的资源。

///</summary>///<paramname="disposing">如果应释放托管(tuōguǎn)资源,为true;否则为false。</param>protectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);} 释放(shìfàng)系统资源9.1.1WinForms概述共九十六页staticclassProgram{///<summary>///应用程序的主入口(rùkǒu)点。

///</summary>[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}程序(chéngxù)的主入口点9.1.1WinForms概述共九十六页标签(biāoqiān)按钮组合(zǔhé)框列表框文本框9.1.1WinForms概述共九十六页(1)创建窗体(2)为窗体添加控件(3)设计控件在窗体中的布局(4)设置(shèzhì)各控件属性(5)编写代码,响应控件事件GUI(GraphicsUserInterface),即图形用户界面,是指用图形的方式(fāngshì)实现人与计算机之间的交互。9.1.2编写GUI应用程序的步骤共九十六页9.1.3Control类.NET中的大多数控件都派生于System.Windows.Forms.Control类。Control类实现了所有窗体交互控件的基本功能:处理用户(yònghù)键盘输入、处理消息驱动、限制控件大小等等。共九十六页Control类的属性(shǔxìng)共九十六页Control类的属性(shǔxìng)共九十六页Control类的属性(shǔxìng)共九十六页Name:

9.1.4控件的基本(jīběn)属性用来获取(huòqǔ)或设置控件的名称。名称是控件的标识。Text:

用来获取或设置控件的标题文字。Width和Height:

用来获取或设置控件的大小。X和Y:

用来获取或设置控件的位置。Visible:

用来获取或设置控件是否可见。取值为true或false。共九十六页Enabled:

9.1.4控件的基本(jīběn)属性ForeColor:

用来(yònɡlái)获取或设置控件的前景色。BackColor:

用来获取或设置控件的背景色。Font:

用来获取或设置控件的字体。BorderStyle:

用来获取或设置控件的边框。用来获取或设置控件是否对响应交互。取值为true或false。共九十六页AutoSize:

9.1.4控件的基本(jīběn)属性Anchor:

Dock:

获取(huòqǔ)或设置控件停靠到父容器的哪一个边缘。TextAlign:

用来确定文本对齐方式。Cursor:

用来获取或设置鼠标移到控件上时,被显示的鼠标指针类型。用来获取或设置控件是否自动调整大小。取值为true或false。获取或设置控件的哪些边缘锚定到其容器边缘。共九十六页(1)Name:用来获取或设置(shèzhì)控件的名称。名称是控件的标识。(2)Text:用来获取或设置控件的标题文字。(3)Width和Height:用来获取或设置控件的大小。(4)X和Y:用来获取或设置控件的位置。(5)Visible:用来获取或设置控件是否可见。取值为true或false。(6)Enabled:用来获取或设置控件是否对响应交互。取值为true或false。(7)ForeColor:用来获取或设置控件的前景色。(8)BackColor:用来获取或设置控件的背景色。(9)Font:用来获取或设置控件的字体。(10)BorderStyle:用来获取或设置控件的边框。(11)AutoSize:用来获取或设置控件是否自动调整大小。取值为true或false。(12)Anchor:获取或设置控件的哪些边缘(biānyuán)锚定到其容器边缘(biānyuán)。(13)Dock:获取或设置控件停靠到父容器的哪一个边缘。(14)TextAlign:用来确定文本对齐方式。(15)Cursor:用来获取或设置鼠标移到控件上时,被显示的鼠标指针的类型。共九十六页在窗体上放置一个图片(túpiàn)框、一个“显示”按钮和一个“隐藏”按钮。开始运行时,图片不可见,“显示“按钮可用,“隐藏”按钮不可用。单击“显示”按钮后,图片显示出来,“显示”按钮变成不可用,而“隐藏”按钮变成可用。例9-1:图片(túpiàn)的显示和隐藏问题描述共九十六页9.1.5事件(shìjiàn)和事件(shìjiàn)处理事件处理程序是绑定到事件的方法。当引发事件时,执行事件处理程序内的代码。每个事件处理程序提供(tígōng)两个处理事件的参数。如下为Button控件的Click事件的事件处理程序:第一个参数sender提供对引发事件的对象的引用。第二个参数e传递针对要处理的事件的对象。通过引用对象的属性(有时引用其方法)可获得一些信息,如鼠标事件中鼠标的位置或拖放事件中传输的数据。privatevoidbutton1_Clicked(objectsender,System.EventArgse){}共九十六页键盘事件:当用户对键盘进行操作时,系统(xìtǒng)会产生相应的键盘事件。当用户按下某个键时,就会发生KeyDown事件,随后便发生KeyPress事件。而当用户释放某个键时,发生KeyUp事件。当用户按住某个键不放时,KeyDown和KeyPress事件会不停地重复触发。9.1.5事件(shìjiàn)和事件(shìjiàn)处理共九十六页鼠标事件:鼠标是一种定位输入设备,通常(tōngcháng)有两个或三个按钮(左、中和右按钮),还可能有滚轮。它的基本操作方式主要有:单击、双击和滚动。

9.1.5事件(shìjiàn)和事件(shìjiàn)处理共九十六页Control类的事件(shìjiàn)

共九十六页Control类的方法(fāngfǎ)共九十六页Control类的方法(fāngfǎ)共九十六页例9-2:图片显示(xiǎnshì)控制问题描述窗体上用图片框显示一张图片。当在图片框上单击鼠标左键时图片放大10%,单击鼠标右键时图片缩小10%。鼠标在图片框上移动(yídòng)时,窗体标题显示当前位置坐标。共九十六页9.2常用(chánɡyònɡ)控件标签(Label):用于显示用户不能编辑的文本或图象,起标注或说明作用。该控件不能获得(huòdé)焦点。9.2.1标签标签共九十六页

标签的属性、事件(shìjiàn)与方法属性说明Text该属性用于设置或获取与该控件关联的文本Image指定标签要显示的图象方法说明Hide隐藏控件,调用该方法时,即使Visible属性设置为True,控件也不可见Show相当于将控件的Visible属性设置为True并显示控件事件说明Click用户单击控件时将发生该事件9.2.1标签(biāoqiān)共九十六页按钮(Button):提供用户(yònghù)与应用程序的交互,单击按钮来执行相应的操作。9.2.2按钮按钮共九十六页按钮的属性、事件(shìjiàn)与方法属性说明Text按钮表面的标题方法说明PerformClick执行Button控件的Click事件事件说明Click用户单击控件时将发生该事件MouseEnter鼠标进入按钮区域时触发MouseLeave鼠标离开按钮区域时触发9.2.2按钮共九十六页9.2.2按钮Click事件(shìjiàn)练习。privatevoidbutton1_Click(objectsender,System.EventArgse){MessageBox.Show(this,"你点击(diǎnjī)了[确定]按钮。","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);}共九十六页9.2.2按钮MouseEnter事件(shìjiàn)练习。privatevoidbutton1_MouseEnter(objectsender,System.EventArgse){//颜色在System.Drawing名称(míngchēng)空间下

this.button1.BackColor=Color.Red;}共九十六页9.2.2按钮MouseLeave事件(shìjiàn)练习。privatevoidbutton1_MouseLeave(objectsender,System.EventArgse){this.button1.BackColor=SystemColors.Control;}共九十六页文本框(TextBox):文本框经常用于获取用户输入或显示文本,通常用于可编辑文本,也可以设定其成为(chéngwéi)只读控件。文本框能够显示多行数据,并添加基本的格式设置。

9.2.3文本框文本框共九十六页属性说明MaxLength可在文本框中输入的最大字符数

Multiline表示是否可在文本框中输入多行文本

Passwordchar机密和敏感数据,密码输入字符

ReadOnly文本框中的文本为只读Text检索在控件中输入的文本方法说明Clear删除现有的所有文本

Focus设置焦点事件说明KeyPress用户按一个键结束时将发生该事件

Text属性是文本(wénběn)框最重要的属性,要显示的文本(wénběn)就包含在Text属性中。Text属性可以在设计窗口时使用属性窗口设置,也可以在运行时用代码设置或者通过用户输入设置,同样也可以在运行时通过读取Text属性来获得文本框的当前内容。

文本框的属性、事件(shìjiàn)与方法9.2.3文本框共九十六页设计(shèjì)一个乘法运算窗口,如下图所示,该窗口能完成浮点数乘法运算。例9-3:乘法(chéngfǎ)运算说明共九十六页

privatevoidbutton1_Click(objectsender,EventArgse)//求积

{doublea=0,b=0,s=0;try{a=Convert.ToDouble(textBox1.Text);b=Convert.ToDouble(textBox2.Text);}catch(Exceptionexp){MessageBox.Show(exp.Message);}s=a*b;textBox3.Text=Convert.ToString(s);}

privatevoidbutton2_Click(objectsender,EventArgse)//清空(qīnɡkōnɡ)

{textBox1.Clear();textBox2.Clear();textBox3.Clear();

}

privatevoidbutton3_Click(objectsender,EventArgse)//退出

{this.Close();

}共九十六页设计一个登录窗口。登录窗口是很多应用系统中不可缺少的组成部分。通过(tōngguò)验证用户输入的用户名和密码,决定是否允许用户进入系统,可在一定程度上保证系统的安全。例9-4:登录(dēnɡlù)窗体设计说明共九十六页privatevoidbutton1_Click(objectsender,EventArgse)

{

if((this.textBox1.Text==“abc”)&&(this.textBox2.Text==“123”))

{

MessageBox.Show(“登录成功(chénggōng)”);

}else

{

MessageBox.Show(“输入错误!”);

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

this.textBox1.Clear();

this.textBox2.Clear();

this.textBox1.Focus();();

}共九十六页单选按钮(RadioButton):单选按钮(RadioButton)通常成组出现,用于为用户(yònghù)提供两个或多个互相排斥的选项。单选按钮是以他们所在的容器划分组的,直接在Form上放置的单选按钮将自动成为一组,这时Form就是容器,当选中容器中的一个单选按钮时,其他的将自动撤销选中。

9.2.4单选按钮控件共九十六页如果要在一个Form上创建多个单选按钮组,则需要使用GroupBox或者Panel控件作为容器。把单选按钮组合(zǔhé)在一起,使它们创建一个逻辑单元。首先在窗体上拖放一个GroupBox控件(组框),再把需要的RadioButton按钮放在组框的边界内,RadioButton按钮知道如何改变自己的状态,以反应组框中唯一被选中的选项。

9.2.4单选按钮控件共九十六页属性说明Appearance获取或设置确定单选按钮控件外观的值Text获取或设置与此控件关联的文本CheckAlign获取或设置RadioButton的复选框部分的位置Image获取或设置显示在按钮控件上的图像Checked获取或设置一个值,该值指示是否已选中控件事件说明CheckedChanged当Checked属性的值更改时发生Click在单击控件时发生单选按钮的属性(shǔxìng)、事件9.2.4单选按钮控件共九十六页例9-5:RadioButton控件的实例(shílì)练习共九十六页复选按钮(CheckBox):复选框(CheckBox)指示某特定条件是打开的还是关闭的。当用户希望选择一个或多个选项时,就需要使用(shǐyòng)复选框。多个CheckBox控件构成一组选项时,可以进行多重选择,相互之间不影响。

9.2.5复选按钮控件共九十六页属性说明Appearance获取或设置确复选按钮控件外观的值Text获取或设置与此控件关联的文本Image获取或设置显示在按钮控件上的图像Checked获取或设置一个值,该值指示是否已选中控件CheckState获取或设置CheckBox的状态ThreeState获取或设置一个值,该值指示此CheckBox是否允许三种复选状态而不是两种。事件说明CheckedChanged当Checked属性的值更改时发生CheckStateChanged当CheckState属性的值更改时发生Click在单击控件时发生复选按钮的属性(shǔxìng)、事件9.2.5复选按钮控件共九十六页一个关于RadioButton控件以及CheckBox控件的使用的简单例子(lìzi)。程序界面如下:

例9-6:简单的学生信息调查的设计(shèjì)与实现共九十六页

privatevoidbutton1_Click(objectsender,EventArgse){

stringname;stringsex;stringcourse=null;name=textBox1.Text;if(radioButton1.Checked)sex=radioButton1.Text;elsesex=radioButton2.Text;if(checkBox1.Checked)course+=checkBox1.Text+"";if(checkBox2.Checked)course+=checkBox2.Text+"";if(checkBox3.Checked)course+=checkBox3.Text+"";if(checkBox4.Checked)course+=checkBox4.Text+"“;textBox2.Show();textBox2.Text="姓名:"+name+"\r\n\r\n"+

"性别(xìngbié):"+sex+"\r\n\r\n"+

"所学过的课程:"+course;}共九十六页本案例建立一个使用(shǐyòng)单选钮和复选钮的应用程序,界面上有一个文本框,两组单选钮和一组复选钮。两组单选钮分别用于设置文本框的字体和字号,一组复选钮用于设置文本框的字型。程序界面如下:

例9-7:字体(zìtǐ)设置案例说明共九十六页

//“字体——宋体”设置

privatevoidradioButton1_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("宋体",textBox1.Font.Size,textBox1.Font.Style);}//“字体——隶书”设置

privatevoidradioButton2_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("隶书",textBox1.Font.Size,textBox1.Font.Style);}//“字体——楷体_GB2312”设置

privatevoidradioButton3_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont("楷体_GB2312",textBox1.Font.Size,textBox1.Font.Style);}//“字号——小五”设置

privatevoidradioButton6_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,9f,textBox1.Font.Style);}//“字号——三号(sānhào)”设置

privatevoidradioButton5_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,15.75f,textBox1.Font.Style);}//“字号——一号”设置

privatevoidradioButton4_CheckedChanged(objectsender,EventArgse){textBox1.Font=newFont(textBox1.Font.Name,26.25f,textBox1.Font.Style);}

共九十六页//“字型——加粗”设置(shèzhì)

privatevoidcheckBox1_CheckedChanged(objectsender,EventArgse){if(checkBox1.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Bold);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Bold);}//“字型——斜体”设置

privatevoidcheckBox2_CheckedChanged(objectsender,EventArgse){if(checkBox2.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Italic);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Italic);}//“字型——下划线”设置

privatevoidcheckBox3_CheckedChanged(objectsender,EventArgse){if(checkBox3.Checked)textBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style|FontStyle.Underline);elsetextBox1.Font=newFont(textBox1.Font.Name,textBox1.Font.Size,textBox1.Font.Style&~FontStyle.Underline);}共九十六页列表框(ListBox):列表框控件用来显示一组条目,以便让操作者从中选择一条或者多条,然后进行(jìnxíng)相应的处理。

9.2.6列表框共九十六页Items:

列表框的主要(zhǔyào)属性MultiColumn:

ColumnWidth:

获取(huòqǔ)或设置多列ListBox中列的宽度。SelectedIndex:

获取或设置ListBox中当前选定项的从零开始的索引。获取或设置ListBox的项。获取或设置一个值,该值指示ListBox是否支持多列。共九十六页SelectedItems:

获取包含ListBox中当前选定(xuǎndìnɡ)项的集合。SelectionMode:

获取或设置在ListBox中选择项所用(suǒyònɡ)的方法。Sorted:

获取或设置一个值,该值指示ListBox中的项是否按字母顺序排序。SelectedItem:

获取或设置ListBox中的当前选定项。列表框的主要属性共九十六页Items.Add()

Items.Clear()

从集合(jíhé)中移除所有的项。Items.Insert()

将项插入(chārù)列表框的指定索引处。Items.Remove()

从集合中移除指定的对象。Items.RemoveAt()

移除集合中指定索引处的项。向ListBox的项列表添加项。列表框的主要方法共九十六页例9-8:列表框的使用(shǐyòng)举例共九十六页

//添加(tiānjiā)新的课程

privatevoidbutton1_Click(objectsender,EventArgse){boolexit=false;

if(textBox1.Text=="")MessageBox.Show("所添加的课程不能为空。");else{

for(inti=0;i<listBox1.Items.Count;i++)

if(textBox1.Text==listBox1.Items[i].ToString()){MessageBox.Show("不能添加重复的课程。");exit=true;textBox1.Clear();break;}

if(exit==false){listBox1.Items.Add(textBox1.Text);textBox1.Clear();}

}

}共九十六页

//”->”按钮单击事件(shìjiàn)privatevoidbutton2_Click(objectsender,EventArgse){

try{this.listBox2.Items.Add(this.listBox1.SelectedItem);

this.listBox1.Items.Remove(this.listBox1.SelectedItem);}

catch(Exceptionexp){MessageBox.Show(exp.Message);}}

//”<-”按钮单击事件privatevoidbutton3_Click(objectsender,EventArgse){try{

this.listBox1.Items.Add(this.listBox2.SelectedItem);

this.listBox2.Items.Remove(this.listBox2.SelectedItem);}

catch(Exceptionexp){

MessageBox.Show(exp.Message);}}共九十六页

//”>>”按钮单击事件(shìjiàn)privatevoidbutton4_Click(objectsender,EventArgse){

for(inti=0;i<this.listBox1.Items.Count;i++){this.listBox2.Items.Add(this.listBox1.Items[i]);

}

this.listBox1.Items.Clear();}//”<<”按钮单击事件privatevoidbutton5_Click(objectsender,EventArgse){for(inti=0;i<this.listBox2.Items.Count;i++){this.listBox1.Items.Add(this.listBox2.Items[i]);}

this.listBox2.Items.Clear();}共九十六页组合框(ComboBox):组合框由两部分组成,即一个文本框和一个列表框。文本框可以用来显示当前选中的条目,如果文本框可以编辑,则可以直接输入选择的条目。单击文本框旁边带有向下箭头(jiàntóu)的按钮,则会弹出列表框,使用键盘或者鼠标可以在列表框中选择条目。

9.2.7组合(zǔhé)框共九十六页DropDownStyle:

组合(zǔhé)框的主要属性Items:

MaxDropDownItems:

下拉列表能显示的最大条目(tiáomù)数(1—100),如果实际条目数大于此数,将出现滚动条。确定下拉列表组合框类型。存储ComboBox中的列表内容。Simple:表示文本框可编辑,列表部分永远可见。DropDown:是默认值,表示文本框可编辑,必须单击箭头才能看到列表部分。DropDownList:表示文本框不可编辑,必须单击箭头才能看到列表部分。共九十六页SelectedItem:

SelectedIndex:编辑框所选列表条目的索引(suǒyǐn)号,列表条目索引(suǒyǐn)号从0开始。如果编辑框未从列表中选择条目,该值为-1。所选择条目的内容,即下拉列表中选中的字符串。如一个(yīɡè)也没选,该值为空。其实,属性Text也是所选择的条目的内容。组合框的主要属性Sorted:

表示下拉列表框中条目是否以字母顺序排序,默认值为false,不允许。共九十六页组合框的主要(zhǔyào)事件被选索引号改变时发生(fāshēng)的事件。SelectedIndexChanged:共九十六页本例是要在左边的ComboBox中选择一个俱乐部名称,在右边的ComboBox中自动添加一些被选中的俱乐部的球员(qiúyuán)名称,单击【确定】按钮,则弹出所选择的信息。单击【取消】按钮,退成应用程序。例9-9:球员(qiúyuán)俱乐部问题描述共九十六页privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){

switch(boBox1.SelectedIndex){

case0:boBox2.Items.Clear();

boBox2.Items.Add("皮尔洛");boBox2.Items.Add("卡卡(kǎkǎ)");boBox2.Items.Add("西多夫");boBox2.Items.Add("马尔蒂尼");boBox2.Items.Add("吉拉蒂诺");boBox2.Items.Add("迪达");break;case1:boBox2.Items.Clear();boBox2.Items.Add("伊布拉希莫维奇");boBox2.Items.Add("阿德里亚诺");boBox2.Items.Add("塞萨尔");boBox2.Items.Add("坎比亚索");boBox2.Items.Add("克雷斯波");boBox2.Items.Add("斯坦科维奇");break;case2:

boBox2.Items.Clear();

boBox2.Items.Add("卡莫拉内西");boBox2.Items.Add("蒂亚格");boBox2.Items.Add("布冯");boBox2.Items.Add("特雷泽盖");boBox2.Items.Add("皮耶罗");boBox2.Items.Add("内德维德");break;case3:boBox2.Items.Clear();boBox2.Items.Add("托蒂");boBox2.Items.Add("塔岱依");boBox2.Items.Add("小曼奇尼");boBox2.Items.Add("皮萨罗");boBox2.Items.Add("梅克斯");boBox2.Items.Add("帕努奇");break;default:break;}}共九十六页privatevoidbutton2_Click(objectsender,EventArgse){this.Close();Application.Exit();}privatevoidbutton1_Click(objectsender,EventArgse){

stringclub=boBox1.Items[boBox1.SelectedIndex].ToString();

stringplayer=boBox2.Items[boBox2.SelectedIndex].ToString();MessageBox.Show("俱乐部:"+club+"\r\n"+"球员(qiúyuán):"+player,"球员介绍",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);

}共九十六页本案例建立一个模拟在线购物(ɡòuwù)程序,用户输入相应的信息后单击“确定”按钮,显示出用户提交的有关信息。

例9-10:在线(zàixiàn)购物。说明共九十六页

//“商品类型”组合框选项改变(gǎibiàn)privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){switch(comboBox1.SelectedIndex){case0:listBox1.Items.Clear();listBox1.Items.Add("显示器");listBox1.Items.Add("光驱");listBox1.Items.Add("打印机");listBox1.Items.Add("键盘");break;

case1:listBox1.Items.Clear();listBox1.Items.Add("计算机应用基础");listBox1.Items.Add("Java程序设计");listBox1.Items.Add("操作系统");listBox1.Items.Add("VisualC#.NET");break;}}共九十六页

//“>”按钮单击事件(shìjiàn)

privatevoidbutton1_Click(objectsender,EventArgse){boolexit=false;

for(inti=0;i<listBox2.Items.Count;i++){

if(listBox2.Items[i].ToString()==listBox1.SelectedItem.ToString()){MessageBox.Show("该产品已经选择");exit=true;break;}}

if(exit==false){listBox2.Items.Add(listBox1.SelectedItem.ToString());}}//“<”按钮单击事件privatevoidbutton2_Click(objectsender,EventArgse){listBox2.Items.Remove(listBox2.SelectedItem.ToString());}共九十六页

//“>>”按钮单击事件(shìjiàn)

privatevoidbutton3_Click(objectsender,EventArgse){

for(inti=0;i<listBox1.Items.Count;i++){boolexit=false;

for(intj=0;j<listBox2.Items.Count;j++){

if(listBox1.Items[i].ToString()==listBox2.Items[j].ToString()){exit=true;break;}

}

if(exit==false){listBox2.Items.Add(listBox1.Items[i].ToString());}}}//“<<”按钮单击事件privatevoidbutton4_Click(objectsender,EventArgse){listBox2.Items.Clear();}共九十六页

//“确定”按钮单击事件

privatevoidbutton5_Click(objectsender,EventArgse){stringname=this.textBox1.Text;stringphone=this.textBox2.Text;stringcomm="";stringpayment="";stringacknowledgement="";

for(inti=0;i<listBox2.Items.Count;i++)comm+=listBox2.Items[i].ToString()+"";

if(radioButton1.Checked)payment=radioButton1.Text;elsepayment=radioButton2.Text;

if(checkBox1.Checked)acknowledgement+=checkBox1.Text+"";

if(checkBox2.Checked)acknowledgement+=checkBox2.Text+"";

if(checkBox3.Checked)acknowledgement+=checkBox3.Text+"";

this.textBox3.Text="姓名:"+name+"\r\n"+"电话:"+phone+"\r\n"+"已选择的商品(shāngpǐn):"+comm+"\r\n"+"付款方式:"+payment+"\r\n"+"确认方式:"+acknowledgement;}共九十六页

//“取消(qǔxiāo)”按钮单击事件privatevoidbutton6_Click(objectsender,EventArgse){this.textBox1.Clear();this.textBox2.Clear();boBox1.SelectedIndex=0;this.listBox1.Items.Clear();this.listBox2.Items.Clear();this.checkBox1.Checked=false;this.checkBox2.Checked=false;this.checkBox3.Checked=false;this.textBox3.Clear();}共九十六页

ToolTip组件,其作用是当鼠标停留在某个(mǒuɡè)与ToolTip组件建立关联的控件上一段时间后,自动显示该控件功能的提示信息。

主要属性有:

Active:指示该控件当前是否处于激活状态。

AutomaticDelay:设置经过多长时间显示提示信息,缺省值为500ms。

AutoPopDelay:设置鼠标指针停留多长时间后消失提示信息。

9.2.8ToolTip控件共九十六页例如:向设计窗体拖放一个(yīɡè)ToolTip控件,然后在构造函数中加入下列代码:this.toolTip1.SetToolTip(boBox1,"选择参加的小组。");this.toolTip1.SetToolTip(boBox2,"选择左边小组参加的项目(xiàngmù)。");this.toolTip1.SetToolTip(this.listBox1,"各小组参加的项目列表。");运行,分别将鼠标在上述控件中停留一段时间,观察显示的提示信息。共九十六页

PictureBox控件是用于显示图像(túxiànɡ)的Windows图片框控件。9.2.9PictureBox控件共九十六页PictureBox控件的主要(zhǔyào)属性Image:在PictureBox中显示(xiǎnshì)的图片。SizeMode:图片在控件中的显示方式,有如下5种选择。AutoSize:自动调整控件PictureBox的大小,使其等于所包含的图片大小;CenterImage:将控件的中心和图片的中心对齐显示。如果控件比图片大,则图片将居中显示;如果图片比控件大,则图片将居于控件中心,而外边缘将被剪裁掉。Normal:图片被置于控件的左上角。如果图片比控件大,则超出部分被剪裁掉。StretchImage:控件中的图像被拉伸或收缩,以适合控件的大小,完全占满控件。Zoom:控件中的图片按照比例拉伸或收缩,以适合控件的大小,占满控件的长度或高度。共九十六页

Timer组件主要用于检查是否到达事先规定的时间间隔,并在到达该时间间隔触发的事件中执行需要的功能。1、常用的基本属性(shǔxìng)(1)Enabled:是否启用计时,false表示停止计时,true表示开始计时。(2)Interval:触发Tick事件的间隔时间,以ms为单位,默认为100ms。2、常用的基本事件Tick事件:每隔[Interval]属性指定的时间都会触发。Timer控件9.2.10日期(rìqī)时间相关控件

共九十六页例9-11:设计一个(yīɡè)简单的时钟显示窗体。说明(shuōmíng)程序运行初始界面单击“开始”按钮单击“停止”按钮共九十六页例9-11:设计(shèjì)一个简单的时钟显示窗体。实现(shíxiàn)步骤(1)新建一个名为TimerExample的Windows应用程序项目,将Form1.cs改名为FormTimer.cs。(2)调整窗体到适当大小;设置[Text]属性为“时钟显示窗体”。(3)在Form窗体中添加一个Timer组件、一个Button控件和一个Label控件,在[设计]视图下,窗体中各控件的属性、布局及显示效果如图所示。共九十六页(4)分别(fēnbié)添加timer1的Tick事件和buttonOK的Click事件代码。privatevoidtimer1_Tick(objectsender,EventArgse){labelDisplay.Text=DateTime.Now.ToLongTimeString();}//每次按下buttonnOK按钮,使timer1的启用状态发生变化,并相应地改变//buttonOK上的文本privatevoidbuttonOK_Click(objectsender,EventArgse){timer1.Enabled=!timer1.Enabled;buttonOK.Text=timer1.Enabled?"停止":"开始";}(5)按<F5>键编译并执行,观察结果。共九十六页

DateTimePicker

控件使用户可以从日期或时间列表中选择单个项。在用来表示日期时,它显示为两部分:一个(yīɡè)下拉列表(带有以文本形式表示的日期)和一个(yīɡè)网格(在单击列表旁边的向下箭头时显示)。DataTimerPick控件9.2.10日期时间(shíjiān)相关控件

共九十六页

MonthCalendar控件与DateTimePicker控件类似,显示(xiǎnshì)效果与DateTimePicker控件使用的下拉式日历一致。MonthCalendar控件9.2.10日期时间(shíjiān)相关控件

共九十六页标准对话框是指MessageBox类。MessageBox类的作用是显示可包含文字、按钮和有提示用户作用的符号的对话框。

MessageBox类无法创建它的实例,只能用类名来调用它的方法。若要显示对话框,可以直接(zhíjiē)调用它的静态方法Show方法。显示在消息框中的标题、消息、按钮和图标由传递给该方法的参数确定。9.3标准(biāozhǔn)对话框共九十六页名称说明Show(String)显示一个消息框,该消息框包含消息并返回结果。Show(String,String)显示一个消息框,该消息框包含消息和标题栏标题,并且返回结果。Show(Window,String)在指定窗口的前面显示消息框。该消息框显示消息并返回结果。Show(String,String,MessageBoxButton)显示一个消息框,该消息框包含消息、标题栏标题和按钮,并且返回结果。Show(Window,String,String)在指定窗口的前面显示消息框。该消息框显示消息和标题栏标题,并且返回结果。Show(String,String,MessageBoxButton,MessageBoxImage)显示一个消息框,该消息框包含消息、标题栏标题、按钮和图标,并且返回结果。Show(Window,String,String,MessageBoxButton)在指定窗口的前面显示消息框。该消息框显示消息、标题栏标题和按钮,并且返回结果。Show(String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult)显示一个消息框,该消息框包含消息、标题栏标题、按钮和图标,并接受默认消息框结果和返回结果。Show(Window,String,String,MessageBoxButton,MessageBoxImage)在指定窗口的前面显示消息框。该消息框显示消息、标题栏标题、按钮和图标,并且返回结果。Show(String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult,MessageBoxOptions)显示一个消息框,该消息框包含消息、标题栏标题、按钮和图标,并且接受默认消息框结果、遵从指定选项并返回结果。Show(Window,String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult)在指定窗口的前面显示消息框。该消息框显示消息、标题栏标题、按钮和图标,并接受默认消息框结果和返回结果。Show(Window,String,String,MessageBoxButton,MessageBoxImage,MessageBoxResult,MessageBoxOptions)在指定窗口的前面显示消息框。该消息框显示消息、标题栏标题、按钮和图标,并且接受默认消息框结果、遵从指定选项并返回结果。共九十六页名称说明Sh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论