版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#程序设计第七章WinForm初步内容提要7.7高级控件7.8
com组件7.9
mdi7.10问与答7.11思考与练习7.12实战任务7.1窗体7.2控件使用7.3基本控件7.4常用组件7.5菜单7.6对话框本章重难点常用控件的属性和方法常用组件(Timer)菜单的使用对话框的使用高级控件的使用(richtextbox)MDI(菜单合并)WinForm编程初试计算1+1=2步骤1、新建WindowsFormApplication2、从左边控件箱中拖动3个TextBox控件、1个Label控件和1个Button控件到窗体上3、在窗体空白处点右键选择“属性”,设置Text属性为”简易加法器”4、在Label控件上点击右键选择“属性”,设置其Text属性为”+”5、在Button控件上点击右键选择“属性”,设置其Text属性为”=”步骤6、双击“=”按钮,为按钮添加“单击事件”处理代码:
int
a,b,c; a=int.Parse(textBox1.Text);
b=int.Parse(textBox2.Text);
c=a+b;
textBox3.Text=c.ToString();7、点击运行按钮启动程序,输入两个数,点击“等号”按钮Windows窗口编程概要程序由窗体及在窗体上的控件组成控件由属性和事件组成,属性控制其外观、特性、风格等代码的执行由事件驱动,当用户执行某个操作时,将会触发该控件的某个事件(例如单击按钮会触发其Click事件,移动鼠标会产生MouseMove事件),相应的,该事件的处理函数的代码将会被执行每个控件都会响应一些不同的事件,例如,单击Button控件将触发按钮的Click事件Windows窗口编程概要WinForm编程主要就是决定处理控件的哪些事件,然后编写事件的处理代码处理代码主要做:读取控件的不同属性获取用户在该控件上的输入或选择,然后处理,将计算结果显示在控件上,或通过控件反映(设置控件的属性或调用其方法),仍然是输入,处理,输出的一个过程在窗体设计器中双击某个控件可进入其常用事件处理代码编辑界面7.1窗体窗体由类System.Windows.Forms.Form封装窗体是WinForm应用开发中最基本的一个容器控件,和其它诸多普通控件一样,都继承于控件基类System.Windows.Forms.Control,故所有的控件都具有一些共有的特性。7.1 窗体常用属性7.1 窗体常用属性7.1 窗体常用属性7.1 窗体常用方法7.1 窗体常用事件7.1 窗体常用事件7.1 鼠标事件参数MouseEventArgsClick与MouseClick事件很类似,但是MouseClikc事件的参数附带了更多的鼠标按键信息。MouseClick仅能通过鼠标操作触发,而Click事件则不受此限。7.2 控件使用控件添加双击“工具箱”中要使用的控件,此时将会在窗体的默认位置(客户区的左上角)添加默认大小的控件;在“工具箱”中选中一个控件,鼠标指针变成与该控件对应的形状;把鼠标指针移到窗体中要摆放控件的位置,按下鼠标左键并拖动鼠标画出控件大小后,松开鼠标即可在窗体的指定位置绘制指定大小的控件;直接把控件从“工具箱”拖放到窗体中,控件为默认大小;直接使用代码控制添加。7.2 控件使用控件调整选中要调整的控件,使用“格式”菜单或是快捷菜单中的命令或者工具栏上的格式按钮进行调整。在调整控件的格式时,将按照基准控件对选择的多个控件进行调整。使用Ctrl键或Shift键选择多个控件,也可以拖动鼠标选择一个控件范围,此时最先进入窗体的控件将作为调整的基准控件。被选中的控件中,基准控件周围是白色方框,其他控件周围是黑色方框。7.2 控件使用控件分层右键单击要操作的控件,从快捷菜单中选择“置于顶层(或底层)”命令或者单击工具栏中的置于顶层(或底层)按钮,则可以把控件置于窗体的最顶层(或底层)。在代码中将控件置于窗体顶层或底层。7.2 控件使用控件定位在窗体设计器中通过拖动控件进行定位在选中控件之后可以使用箭头键微调,更精确地定位控件通过指定控件的Location属性来定位控件;既可以手工指定,也可以代码指定7.2 控件使用控件大小使用鼠标直接拖动控件大小在窗体中选中控件,然后使用Shift+箭头键来微调控件大小在属性窗口中改变控件的Size属性值通过代码来调整Size属性值通过代码来调整Bounds属性值7.2 控件使用控件锚定-Anchor属性Anchor属性用来确定此控件与其容器控件的固定关系的。Anchor属性,可以设定Top、Bottom、Right、Left中的任意几种。使用Anchor属性使控件的位置相对于窗体某一边固定。7.2控件Anchor属性例如下图是按钮Anchor取值为None时,窗口默认和大小改变后的情形7.2控件Anchor属性下图是按钮Anchor取值为Top,Bottom,Left,Right,窗口为改变大小和放大后的情形7.2 控件Dock属性控件停靠-Dock属性获取或设置控件停靠到父容器的哪一个边缘。例如下图分别是取值为none(默认)和left的情况7.2 控件Dock属性下图分别是取值为bottom和fill的情况fill表示填充满父容器7.2 控件Dock属性下图是文本框控件TextBox的Dock取值为fill的情况(Multiline属性设置为true)7.2 控件使用控件的Tab键顺序控件的Tab键顺序决定了用户使用Tab键切换时的顺序。默认情况下,控件的Tab键顺序就是控件添加到窗体中的顺序。7.2 控件使用键盘事件处理两类:第一类是KeyPress事件,当按下的键表示的是一个ASCII字符时就会触发这类事件,可通过它的
KeyPressEventArgs类型参数的属性KeyChar来确定按下键的ASCII码。使用KeyPress事件无法判断是否按下了修改键(例如
Shift,Alt和Ctrl键);第二类是KeyUp或KeyDown事件,该类事件有一个KeyEventArgs类型的参数,通过该参数可以测试是否按下了一些修改键、功能键等特殊按键信息。7.2 控件使用KeyPressEventArgs类的主要属性(KeyPress事件的参数类型)Handled:用来获取或设置一个值,该值指示是否处理过KeyPress事件KeyChar:用来获取按下的键对应的字符,通常是该键的ASCII码7.2 控件使用KeyEventArgs类的主要属性(KeyUp和KeyDown事件的参数类型)Alt:用来获取一个值,该值指示是否曾按下Alt键Control:用来获取一个值,该值指示是否曾按下Ctrl键Handled:用来获取或设置一个值,该值指示是否处理过此事件KeyCode:以Keys枚举型值返回键盘键的键码,该属性不包含修改键(Alt、Control和Shift键)信息,用于测试指定的键盘键KeyData:以Keys枚举类型值返回键盘键的键码,并包含修改键信息,用于判断关于按下键盘键的所有信息KeyValue:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键盘键的数字表示Modifiers:以Keys枚举类型值返回所有按下的修改键(Alt、Control和Shift键),仅用于判断修改键信息Shift:用来获取一个值,该值指示是否曾按下Shift键7.2 控件使用鼠标事件处理MouseEnter:在鼠标指针进入控件时发生。MouseMove:在鼠标指针移到控件上时发生。事件处理程序接收一个MouseEventArgs类型的参数,该参数的主要属性及其含义如下。Button:用来获取按下的是哪个鼠标按钮。该属性是MouseButtons枚举型的值,取值及含义如下:Left(按下鼠标左按钮)、Middle(按下鼠标中按钮)、Right(鼠标右按钮)、None(没有按下鼠标按钮)Clicks:用来获取按下并释放鼠标按钮的次数Delta:用来获取鼠标轮已转动的制动器数的有符号计数。制动器是鼠标轮的一个凹口X:用来获取鼠标所在位置的x坐标Y:用来获取鼠标所在位置的y坐标7.2 控件使用鼠标事件处理MouseHover:当鼠标指针悬停在控件上时将发生该事件MouseDown:当鼠标指针位于控件上并按下鼠标键时将发生该事件。MouseWheel:在移动鼠标轮并且控件有焦点时将发生该事件。MouseUp:当鼠标指针在控件上并释放鼠标键时将发生该事件。MouseLeave:在鼠标指针离开控件时将发生该事件7.2 控件事件处理双击控件,可处理该控件的常用事件双击不同的控件,默认处理的事件是不同的如:Button
默认处理Click
事件TextBox默认处理TextChanged事件Form默认处理FromLoad事件鼠标、键盘事件处理举例新建WinForm应用在窗体上拖入一个Label控件,将其Text属性设置为“愚人节快乐!”,自行设置字体大小颜色等,将其Visible属性设置为false单击窗体空白处选中窗体,在属性窗口切换到事件界面,在KeyDown事件后面双击处理该事件,然后输入后面的代码;同样的方法处理MouseEnter和MouseLeave事件鼠标、键盘事件处理举例private
void
Form1_KeyDown(object
sender,KeyEventArgse){
if(e.Control&&e.Alt&&e.Shift&&
(e.KeyCode==Keys.A))label1.Visible=true;
else
label1.Visible=false;}private
void
Form1_MouseEnter(object
sender,EventArgse){
Randomrd=new
Random();
this.BackColor=Color.FromArgb(rd.Next(0,256),
rd.Next(0,256),rd.Next(0,256));}private
void
Form1_MouseLeave(object
sender,EventArgse){
this.BackColor=
Color.FromKnownColor(KnownColor.WindowFrame);}限制文本框只能输入数字//处理TextBox的
KeyPress事件private
voidtextBox1_KeyPress(objectsender,
KeyPressEventArgs
e){if
(!(e.KeyChar>='0'&&e.KeyChar<='9')&&
e.KeyChar!='\b'&&e.KeyChar!='.') e.Handled=true;//告诉下一个处理者该事件已处理}窗口关闭确认,及MessageBox//处理窗口的FormClosing事件private
voidForm1_FormClosing(objectsender,
FormClosingEventArgs
e){
if
(MessageBox.Show("确定要退出吗?","确认",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)
==DialogResult.No)
{ e.Cancel=true;}}7.3 基本控件LabelButtonRadioButtonCheckBoxTextBoxListBoxComboBoxPictureBoxProgressBarGroupBoxMonthCalendar7.3 基本控件LabelLabel是最简单最基本的一个控件。它通常用于显示静态文本,比如为其他控件显示描述性信息或根据应用程序的状态显示相应的提示信息,一般不需要对标签进行事件处理。7.3 基本控件LabelLabel常用属性有:Text:设置标签中显示的说明文字Size:设置标签大小AutoSize:用来获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。取值为true时,控件将自动调整到刚好能容纳文本时的大小,取值为false时,控件的大小为设计时的大小。默认值为false。BackColor:用来获取或设置控件的背景色。当该属性值设置为Color.Transparent时,标签将透明显示,即背景色不再显示出来。Enabled:用来设置或返回控件的状态。值为true时允许使用控件,值为false时禁止使用控件,此时标签呈暗淡色,一般在代码中设置。7.3 基本控件ButtonButton常用属性。Image:设置显示在按钮上的图像FlatStyle:设置按钮的外观,即定义如何绘制控件的边缘,取值为枚举值:Flat(平面的)PopUp(由平面到凸起)Standard(三维边界)System(根据操作系统决定)TextAlign指定按钮文字的对齐方式;7.3 基本控件Button常用事件:Click:当用户用鼠标左键单击按钮控件时触发MouseDown:当用户在按钮控件上按下鼠标按钮时触发MouseUp:当用户在按钮控件上释放鼠标按钮时触发MouseMove:当用户在按钮上移动鼠标时触发Button举例:“抓悟空”小游戏
private
voidbutton1_MouseMove(objectsender,MouseEventArgse)
{
Size
s=this.ClientSize;//除窗口控制栏外的客户区
Button
btn=senderas
Button;//类似于强制类型转换
Random
r=new
Random();
int
x,y;
x=r.Next(0,s.Width-btn.Width);//注意最大取值
y=r.Next(0,s.Height-btn.Height);
btn.Location
=new
Point(x,y);//设置按钮左上角的位置}Button举例:“抓悟空”小游戏
private
voidbutton1_Click(objectsender,EventArgse)
{
MessageBox.Show("恭喜你抓到了!");
}7.3 基本控件RadioButtonRadioButton常用属性:CheckAlign 设置单选按钮的对齐方式,即文字与小圆圈的位置关系;Checked:用来确定单选按钮是否被选择,该属性很有用;Text:用来设置或返回单选按钮控件内显示的文本,该属性也可以包含访问键,即前面带有“&”符号的字母,这样用户就可以通过同时按Alt键和访问键来选中控件。7.3 基本控件RadioButtonRadioButton主要事件有:CheckedChanged:改变单选框Checked属性时触发。MouseDown:按下鼠标时触发。MouseDown和Click事件的区别MouseDown:按下鼠标时触发(还未松开鼠标即触发)。Click:按下鼠标然后松开后才触发。7.3 基本控件RadioButtonRadioButton分组规则:同一个容器中的RadioButton
默认为一组典型的容器包括:Form,GroupBox,Panel,TabControl等RadioButton举例RadioButton举例private
voidbutton1_Click(objectsender,EventArgse){if
(radioButton1.Checked)labelResult.Text="恭喜你,答对了!";else
if(radioButton4.Checked){
labelResult.Text="场外求助..."; radioButton4.Enabled=false;}else labelResult.Text="很遗憾,你答错了!";}7.3 基本控件CheckBoxCheckBox主要属性有:Checked:获取或设置复选框是否选中。但与单选按钮不同之处是,复选框可以支持3种状态(增加一种不确定状态)。CheckState:用来设置或返回复选框的状态,有三种可能:Checked,Unchecked,Indeterminate(未被选中也未被清除,且显示禁用复选标记)。复选框处于选中或不确定状态时,Checked属性都为true。Appearance:当复选框的Appearance属性设置成Button时,不确定状态是平面按钮,选中状态是按下的按钮,未选定状态是凸起按钮。TextAlign:用来设置控件中文字的对齐方式,有9种选择7.3 基本控件CheckBox主要事件有:CheckedChanged:改变复选框Checked属性时触发。CheckStateChanged:改变复选框CheckedState属性时触发。CheckBox举例当用户选某项时,该项文字加粗变绿点击“确定”,提示“您选择了:…”确定按钮单击事件处理代码
private
voidbutton1_Click(objectsender,EventArgse)
{ string
s="";
if(this.checkBox1.Checked){s=s+this.checkBox1.Text+"\n";
}
if(this.checkBox2.Checked){s=s+this.checkBox2.Text+"\n";
}
if(this.checkBox3.Checked)
{s=s+this.checkBox3.Text+"\n";
}
if(this.checkBox4.Checked){s=s+this.checkBox4.Text+"\n";
}
MessageBox.Show(“您选择了:\n"+s);
}CheckBoxCheckedChanged
事件处理代码(以checkBox1为例)
private
void
checkBox1_CheckedChanged(object
sender,EventArgse)
{
if(this.checkBox1.Checked)
{
this.checkBox1.Font=
new
Font(this.checkBox1.Font,FontStyle.Bold);
this.checkBox1.ForeColor=Color.Green;
}
else
{
this.checkBox1.Font=
new
Font(this.checkBox1.Font,FontStyle.Regular);
this.checkBox1.ForeColor=Color.Black;
}
}确定按钮单击事件处理代码:高效写法
private
voidbutton1_Click(objectsender,EventArgse)
{
CheckBox[]cbs=new
CheckBox[4]{this.checkBox1,
this.checkBox2,this.checkBox3,this.checkBox4};
string
s="";
foreach(CheckBoxcincbs)
{
if(c.Checked)
{s=s+c.Text+"\n";
}
}
MessageBox.Show("您选择了:\n"+s);
}CheckBoxCheckedChanged
事件处理代码(多个控件用同一个事件处理方法)
private
void
checkBox1_CheckedChanged(object
sender,EventArgse)
{
CheckBox
cb=senderas
CheckBox;//sender就是产生事件的对象
if(cb.Checked)
{cb.Font=new
Font(cb.Font,FontStyle.Bold);cb.ForeColor=Color.Green;
}
else
{cb.Font=new
Font(cb.Font,FontStyle.Regular);cb.ForeColor=Color.Black;
}
}1、先双击checkBox1写出其CheckedChanged处理代码2、按着Ctrl键同时选中其他checkBox,在其事件CheckedChanged,右边选择checkBox1_CheckedChanged方法7.3 基本控件TextBoxTextBox是除按钮控件外最常用的控件,常用于接收文本输入。7.3 基本控件TextBoxTextBox常用属性如下:Enabled:获取或者设置控件是否可以响应用户操作。Multiline:获取或者设置控件是否显示为多行文本框。TextAlign:获取或者设置控件中文本的对齐方式;Visible:获取或者设置控件是否可见。WordWrap:获取或设置控件在必要时是否自动换行。Text:该属性是文本框最重要的属性,因为要显示的文本就包含在Text属性中。若需要对文本作更丰富的处理,则可以采用RichTextBox控件。MaxLength:用来设置文本框允许输入字符的最大长度,该属性值为0时,不限制输入的字符数。ReadOnly:获取或者设置文本框是否允许用户输入7.3 基本控件TextBoxTextBox常用属性如下:TextLength:获取控件中文本的长度。PasswordChar:是一个字符串类型,允许设置一个字符,运行程序时,将输入到Text的内容全部显示为该属性值,从而起到保密作用,通常用来输入密码。SelectionLength:用来获取或设置文本框中选定的字符数。只能在代码中使用,值为0时,表示未选中任何字符。SelectionStart:用来获取或设置文本框中选定的文本起始点。只能在代码中使用,第一个字符的位置为0,第二个字符的位置为1,依此类推。SelectedText:用来获取或设置一个字符串,该字符串指示控件中当前选定的文本。只能在代码中使用7.3 基本控件TextBoxTextBox常用方法如下:Clear:清除文本框中的所有文本,调用格式为:textBox1.Clear();Copy:把文本框中的当前选择文字复制到剪贴板,调用格式:textBox1.Copy();Cut:把文本框中的当前选择文字移动到剪贴板,调用格式:textBox1.Cut();Paste:使用剪贴板中的内容替换文本框中当前选择的内容,调用格式:textBox1.Paste();Focus:为文本框设置焦点。如果焦点设置成功,值为true,否则为false。调用格式为:textBox1.Focus();SelectAll:选择文本框中的所有内容,调用格式:textBox1.SelectAll();7.3 基本控件TextBox常用事件鼠标依次点击TextBox1和TextBox2,TextBox1的事件触发顺序为:EnterGotFocusLostFocusLeaveValidatingValidated关于TextBox的Validating事件处理参数为:
(objectsender,CancelEventArgse)
设置e.Cancel=true,将取消光标的离开,使控件重新获得输入焦点TextBox的Validating事件处理举例private
voidtextBox1_Validating(objectsender,CancelEventArgs
e){
string
s=this.textBox1.Text;
if(s.Length>0&&!s.Contains("@"))
{ MessageBox.Show("您输入的邮件地址有误,请重试!"); e.Cancel=true;}}TextBox通常处理其TextChanged事件可实时处理用户的每个字符输入private
voidtextBox1_TextChanged(objectsender,EventArgs
e){
textBox2.Text=textBox1.Text;}7.3 基本控件ListBoxListBox常用属性:Items:保存列表框中显示的项,通过这个属性访问项或对这些项进行操作Items[i]:返回第i个项,类型为objectSelectionMode:指定列表框中项的选择方式,默认情况下列表框一次只能选择一项。取值如下:MultiExtended:允许一次选择多项并使用Shift和Ctrl键来实现扩展选择MultiSimple:允许一次选择多项,但只能通过单击或空格来选择None:不能在列表框中选择One:一次只选择一项(默认)Text:返回当前选定项的文本。该属性用来获取或搜索列表框中当前选定项的文本。7.3 基本控件ListBoxListBox常用属性:获取所选项的索引SelectedIndex:用来获取或设置ListBox控件中当前选定项的从零开始的索引。如果未选定任何项,则返回-1。对于只能选择一项的ListBox控件,可使用此属性确定列表框中选定的项的索引。若列表框的SelectionMode属性设置为SelectionMode.MultiSimple
或SelectionMode.MultiExtended,并在该列表中选定多项,此时该属性只能获得所有被选项中的第一个项SelectedIndices:在列表框允许选择多项时用来获取当前所有选定项的索引集,这是一个SelectedIndexCollection类实例SelectedIndices[i]:被选中的第i个项的索引SelectedIndices.Count:被选中索引集的个数7.3 基本控件ListBoxListBox常用属性:获取所选项SelectedItem:在列表框只允许选择一项时用来获取当前所选择项SelectedItems:在列表框允许选择多项时用来获取当前选择的多个项的集合,这是一个SelectedObjectCollection类实例SelectedItems.Count:返回选中个数SelectedItems[i]:被选中的第i个项7.3 基本控件ListBoxListBox常用方法Items.Add:向列表框的底部增添一个列表项,调用格式:listBox1.Items.Add(s):把参数s添加到列表框中Items.AddRange:将一个数组添加到列表框,调用格式listBox1.Items.Add(array);每个数组元素作为一个项Items.Insert:在列表框中指定位置插入一个列表项,调用格式:ListBox对象.Items.Insert(n,s):参数n代表要插入的项的位置索引,索引不能小于0,不能大于当前项目数;参数s代表要插入的项,其功能是把s插入到listBox控件指定的列表框的索引为n的位置处。但是需要注意的是:在Sorted属性为true时,Insert方法插入的项不能被正确排序。Items.Remove方法:删除指定项,调用格式:Remove(item);Items.RemoveAt方法:删除指定索引的项,调用格式:listBox1.Items.RemoveAt(index);参数为索引7.3 基本控件ListBox常用方法Items.Clear:清除列表框中的所有项。调用格式:listBox1.Items.Clear();SetSelected:用来选中某一项或取消对某一项的选择,调用格式:ListBox1.SetSelected(n,b):如果参数b的值是true,则在列表框中选中索引为n的列表项,如果参数b的值是false,则索引为n的列表项未被选中。GetSelected:返回一个值,该值表明是否选定了指定的项FindString:查找以指定字符串开头的项,找到则返回该项的索引值,否则返回ListBox.NoMatches
FindStringExact:精确查找内容等于指定字符串的项,找到则返回该项的索引值,否则返回ListBox.NoMatches7.3 基本控件ListBox大批量更新数据方法:listBox1.BeginUpdate()//插入删除等listBox1.EndUpdate()可防止闪烁7.3 基本控件ListBox控件常用事件有ClickDoubleClickSelectedIndexChangedListBox举例ListBox举例//多个列表项目的删除private
voidbtnDel_Click(objectsender,EventArgse){//for(inti=0;i<listBox1.SelectedItems.Count;i++)
//listBox1.Items.Remove(listBox1.SelectedItems[i]);//是否可行?
//for(inti=0;i<listBox1.SelectedIndices.Count;i++)//listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);//是否可行?int
n=listBox1.SelectedIndex;while
(listBox1.SelectedItems.Count>0)
listBox1.Items.Remove(listBox1.SelectedItems[0]);}ListBox举例//多个列表项目的上移private
voidbtnMoveUp_Click(objectsender,EventArgse){intn=listBox1.SelectedIndex;if(n>0){foreach(intiinlistBox1.SelectedIndices){listBox1.Items.Insert(i-1,listBox1.Items[i]);listBox1.Items.RemoveAt(i+1);listBox1.SetSelected(i-1,true);}}}7.3 基本控件ComboBoxComboBox:即组合框,由一个文本框和一个下拉列表组成可以在文本框中直接输入也可以从下拉列表中选择其中的某一个选项,不能多选(故它无SelectionMode属性)对于只选一个选项的场合,ComboBox控件的优势在于占用空间少。ComboBox究竟是否能够接受用户输入,这取决于设置。ComboBox的显示风格也可以设置,这是通过DropDownStyle属性来实现。7.3 基本控件ComboBoxComboBox常用属性:ComboBox常用属性:(1)DropDownStyle属性该属性用于设置组合框的样式。有3种可选值:Simple:上面为一个TextBox,下面为一个ListBox,二者组合,可以输入。DropDown:具有下拉列表框,可以选择,也可以直接输入选择项中不存在的文本。该值是默认值。DropDownList:具有下拉列表框,只能选择已有可选项中的值,不能输入其他的文本。ComboBox常用属性(2)MaxDropDownItems属性该属性用于设置下拉列表框中最多显示列表项的个数。有更多的项,则产生垂直滚动条7.3 基本控件ComboBoxComboBox常用事件7.3 基本控件ComboBoxComboBox常用方法:和ListBox类似,如listBox1.Items.Add()、
listBox1.Items.Insert()等Text属性为ComboBox中当前内容(1)创建一个Windows窗体应用程序,在窗体上添加如图所示的控件。其中,将两个ComboBox控件分别命名为cboCountry和cboCity,“确定”按钮命名为btnOk。(2)更改两个ComboBox控件的DropDownStyle属性为DropDownList。为cboCountry有Items添加如下内容:中国美国英国ComboBox举例
7.3.8组合框控件
(3)编写程序代码,实现如下的功能:当cboCountry中,选择相应的国家,在cboCity中显示该国家的部分城市。
7.3.8组合框控件
(4)程序完整代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;
namespaceUseComboBox{
public
partial
classForm1:Form{
7.3.8组合框控件
publicForm1(){ InitializeComponent();}private
voidForm1_Load(objectsender,EventArgse){ cboCountry.SelectedIndex=0;}
7.3.8组合框控件
privatevoidcboCountry_SelectedIndexChanged(objectsender,EventArgse){
switch(cboCountry.SelectedIndex){
case0:cboCity.Items.Clear();cboCity.Items.Add("北京");cboCity.Items.Add("上海");cboCity.Items.Add("天津");cboCity.SelectedIndex=0;
break;
7.3.8组合框控件
case1:cboCity.Items.Clear();cboCity.Items.Add("华盛顿");cboCity.Items.Add("纽约");cboCity.Items.Add("芝加哥");cboCity.SelectedIndex=0;
break;
case2:cboCity.Items.Clear();cboCity.Items.Add("伦敦");cboCity.Items.Add("曼彻斯特");cboCity.Items.Add("考文垂");cboCity.SelectedIndex=0;
break;
7.3.8组合框控件
default:cboCity.Items.Clear();
break;}}
privatevoidbtnOk_Click(objectsender,EventArgse){
stringstrSelect=cboCountry.SelectedItem.ToString()+":"+cboCity.SelectedItem.ToString();
MessageBox.Show(strSelect,"国家城市列表",
MessageBoxButtons.OK,MessageBoxIcon.Information);}}}
7.3.8组合框控件
运行程序,可以实现在任意选择国家组合框中的项,右侧的城市也随之改变,如图9-27所示。单击“确定”按钮,通过MessageBox提示框显示所选的内容,如图9-28所示。说明:代码在Form1窗体的Load事件中对cboCountry控件的SelectedIndex属性赋值,使其默认选择一个选择,避免了运行程序时组合框是所选内容为空。随后的代码处理了cboCountry控件的SelectedIndexChanged事件,根据不同的国家添加不同的城市名称。7.3 基本控件PictureBoxPictureBox常用属性:Image:用来设置控件要显示的图像。设计时确定:设计时单击Image属性,在其后将出现【…】按钮,单击该按钮将出现一个【打开】对话框,在该对话框中找到相应的图形文件后单击【确定】按钮。代码方式:产生一个Bitmap类的实例并赋值给Image属性。形式如下:Bitmapp=newBitmap(图像文件名);pictureBox1.Image=p;代码方式:通过Image.FromFile方法直接从文件中加载。形式如下:pictureBox1.Image=Image.FromFile(图像文件名);代码方式:pictureBox1.Load("图片路径");清除图像:pictureBox1.Image=null;7.3 基本控件PictureBoxPictureBox常用属性:ImageLocation:设置图片框显示的图片的路径pictureBox1.ImageLocation="图片路径";
pictureBox1.Load();7.3 基本控件PictureBoxPictureBox常用属性:SizeMode:用来决定图像的显示模式。其取值如下:AutoSize:调整控件PictureBox大小,使其等于所包含的图像大小。CenterImage:如果控件PictureBox比图像大,则图像将居中显示。如果图像比控件大,则图片将居于控件中心,而外边缘将被剪裁掉。Normal:图像被置于控件的左上角。如果图像控件大,则超出部分被剪裁掉。StretchImage:控件中的图像被拉伸或收缩,以适合控件的大小。Zoom:图像维持纵横比放大或缩小以适应控件大小PictureBox举例PictureBox举例private
voidbtnOpen_Click(objectsender,EventArgse){ this.openFileDialog1.Filter=
"图像文件(*.jpg;*.bmp;*.png;*.gif)|*.jpg;*.bmp;*.png;*.gif"; if(this.openFileDialog1.ShowDialog()==DialogResult.OK) {
this.pictureBox1.Image=
Image.FromFile(this.openFileDialog1.FileName); }
}private
voidbtnClear_Click(objectsender,EventArgse){ this.pictureBox1.Image=null;}7.3 基本控件ProgressBar
ProgressBar
控件又称进度条控件,常用于需要大量时间的场合,用它来指示当前处理进度、完成的百分比,告诉用户程序正在运行。7.3 基本控件ProgressBar
ProgressBar常用属性:Maximum:设置或返回进度条的最大值,默认值为100。Minimum:设置或返回进度条的最小值,默认值为0。Value:设置或返回进度条的当前值。Step:设置或返回一个值,该值用来决定每次调用PerformStep方法时,Value属性增加的幅度。Style:该属性是进度条控件的一个常用属性,用了决定控件运行时的外观,其取值为Blocks、Continuous、Marquee。以Blocks使用体验最好。7.3 基本控件ProgressBar
ProgressBar常用方法:Increment:按该方法的参数指定的值增加进度条的值,调用的一般格式如下:progressBar1.Increment(n);其功能是把progressBar1的Value属性值增加n,n为整数。PerformStep:按step属性值来增加进度条的Value属性值,调用的一般格式如下:progressBar1.PerformStep();ProgressBar举例ProgressBar举例ProgressBar举例ProgressBar举例
public
partial
class
ProgressBarTest:Form
{ bool
running=false;
private
voidProgressBarTest_Load(objectsender,EventArgse)
{
this.timer1.Interval=50;
this.timer1.Enabled=false;
gressBar1.Step=1;
} …ProgressBar举例
private
voidtimer1_Tick(objectsender,EventArgse)
{
gressBar1.PerformStep();
this.Text=gressBar1.Value.ToString()+"%";
if(gressBar1.Value==100)
{
this.btnStartPause.Text="已完成";
this.timer1.Stop();
}
}ProgressBar举例
private
voidbtnStartPause_Click(objectsender,EventArgse)
{
Buttonbtn=senderas
Button;
if(running==false)
{
this.timer1.Start();running=true;btn.Text="暂停";
}
else
{
this.timer1.Stop();running=false;btn.Text="继续";
}
}7.3.6基本控件MaskedTextBox和TextBox基本相同。但通过设置Mask属性可以设置文本框可接受数据的格式Mask属性的取值参见课本P204Text属性获取输入框内容MaskedTextBoxMask属性设置NumericUpDown控件可上下改变数值,也可输入数字Value属性为其数值Minimum、Maximum属性决定了其数值范围(必须为非负整数当其数值改变后将触发ValueChanged事件滚动条HScrollBar、VScrollBar控件在“所有控件”里面滑块的位置代表其Value属性的值Minimum、Maximum属性决定了其数值范围(必须为非负整数SmallChange属性:单击两边箭头Value改变的值LargeChange属性:单击滑块两边Value改变的值注意:在VS2010中,Value属性要想取得最大值Maximum,LargeChange必须等于1(默认为10),否则Value最大取值只能到Maximum–LargeChange+1。(Bug?)滑块的滑动将触发Scroll事件HScrollBar、NumericUpDown举例注意:RGB颜色的每个分量最大值为255HScrollBar、NumericUpDown举例 private
voidhScrollBar1_Scroll(objectsender,ScrollEventArgse)
{
this.numericUpDown1.Value=this.hScrollBar1.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
voidnumericUpDown1_ValueChanged(objectsender,EventArgse)
{
this.hScrollBar1.Value=(int)this.numericUpDown1.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}HScrollBar、NumericUpDown举例 private
void
hScrollBar2_Scroll(object
sender,ScrollEventArgse)
{
this.numericUpDown2.Value=this.hScrollBar2.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
void
numericUpDown2_ValueChanged(object
sender,EventArgse)
{
this.hScrollBar2.Value=(int)this.numericUpDown2.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}HScrollBar、NumericUpDown举例 private
void
hScrollBar3_Scroll(object
sender,ScrollEventArgse)
{
this.numericUpDown3.Value=this.hScrollBar3.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}
private
void
numericUpDown3_ValueChanged(object
sender,EventArgse)
{
this.hScrollBar3.Value=(int)this.numericUpDown3.Value;label1.BackColor=Color.FromArgb(hScrollBar1.Value,
hScrollBar2.Value,hScrollBar3.Value);
}7.3 基本控件GroupBoxGroupBox是一个容器控件,用于对控件进行逻辑分组。其典型的用法之一就是给RadioButton控件分组。7.3
基本控件GroupBoxGroupBox常用属性如下:Text:为分组框设置标题BackColor:设置分组框背景颜色BackgroundImage:设置分组框背景图像AutoSize:设置分组框是否可以根据其内容调整大小。AutoSizeMode:获取或设置启用AutoSize属性时分组框的行为方式。属性值为AutoSizeMode枚举值:GrowAndShrink,根据内容增大或缩小;GrowOnly(默认),可根据其内容任意增大,但不会缩小到Size属性值以下。Controls:分组框中包含的控件集合。可以使用该属性的Add,Clear等方法。7.3 基本控件PanelPanel
也是一个容器控件,类似于GroupBox,但其可以滚动。GroupBox、Panel举例7.3 基本控件MonthCalendarMonthCalendar在窗体中将显示为一个日历界面,可以选择一个日期区间。7.3 基本控件MonthCalendarMonthCalendar常用属性:MaxSelectionCount:单击日历页面的日期就可以在日历控件中选择一个日期,默认情况下最多允许选择7天,可以通过修改这个属性来改变这个天数限定。SelectionStart:一个DateTime值,指定第一个选择的日期SelectionEnd:一个DateTime值,指定最后一个选择的日期SelectionRange:一个SelectionRange对象,代表控件中所选择的日期,它具有两个属性Start,一个DateTime值,代表范围内的第一天;End,一个DateTime值,代表范围内的最后一天。7.3 基本控件MonthCalendarMonthCalendar常用属性:MinDate:控制日历控件允许的最早的有效日期;MaxDate:控制日历控件允许的最晚的有效日期。ShowToday:指定日期是否可以显示在日历的底部,默认值为true。ShowTodayCircle:指定是否在当前日期周围画一个圈,默认为true。TodayDate:设置控件显示的日期,默认情况下显示系统日期。ShowWeekNumbers:指定是否在日历中显示周数,默认为false。7.3 基本控件MonthCalendarMonthCalendar主要事件:DateChanged:日期区间改变后触发MonthCalendar举例//双击控件处理DateChanged事件private
voidmonthCalendar1_DateChanged(objectsender,DateRangeEventArgse){
this.label1.Text=this.monthCalendar1.SelectionStart.ToString("yyyy年M月d日")+"-"+this.monthCalendar1.SelectionEnd.ToString("yyyy年M月d日");
}7.3 基本控件DateTimePickerDateTimePicker控件可让用户选择一个日期Value属性代表其日期值,DateTime类型(time部分为当前系统时间)默认事件为ValueChanged事件,选择的日期改变后触发DateTimePicker举例//双击控件处理其ValueChanged事件private
voiddateTimePicker1_ValueChanged(objectsender,EventArgse){ this.label1.Text=this.dateTimePicker1.Value.ToString();}7.4 常用组件TimerTimer用于计时,并以指定的间隔循环往复的执行某个动作,该控件在运行时不可见。通过计时处理可以实现各种复杂的动作,例如动画效果等。Timer组件的常用属性:Enable:定时器事件是否处于运行状态。默认情况下为false,即定时器不开启;Interval:指定定时器控件的时间间隔,单位为毫秒。如它的值设置为500,则将每隔0.5秒发生一个Tick事件。7.4 常用组件TimerTimer组件的常用方法:Start:启动时钟,即把Enable属性设为true;Stop:停止时钟,把Enable属性设为false。Timer组件的常用事件:Tick:在定时器被开启并且指定的时间间隔(即Interval)到达时触发这个事件。可以通过捕捉该事件来进行代码操作。Timer举例:数字时钟
private
voidTimerTest_Load(objectsender
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024上海市技术合同认定的解读
- 2024店铺租赁的合同模板
- 2024至2030年中国高结合力网布数据监测研究报告
- 2024至2030年中国铝制沙发脚行业投资前景及策略咨询研究报告
- 分级护理护理实施
- 2023年工业炉窑的新型燃烧装置项目综合评估报告
- 2024至2030年中国耐磨铸钢件数据监测研究报告
- 2024至2030年中国球形细孔硅胶行业投资前景及策略咨询研究报告
- 2024至2030年中国水平螺翼干式冷水表数据监测研究报告
- 2024至2030年中国扫路车数据监测研究报告
- 收款确认单(新)(共4页)
- 历史剧——民族英雄林则徐
- 监控系统试运行与方案
- 《我是交通小博士》PPT课件.ppt
- 流式细胞术报告单解读
- 代表怎样写好建议
- 矿山电工课程设计
- 2流动人员人事档案转递通知单存根
- 恒电位仪操作规程
- 全县蔬菜产业发展情况的调研报告 (3)
- 威尼斯狂欢节长笛钢琴伴奏谱PierreAgricolaGeninC
评论
0/150
提交评论