lecture7-9winform程序设计-p本章教学目标_第1页
lecture7-9winform程序设计-p本章教学目标_第2页
lecture7-9winform程序设计-p本章教学目标_第3页
lecture7-9winform程序设计-p本章教学目标_第4页
lecture7-9winform程序设计-p本章教学目标_第5页
免费预览已结束,剩余89页可下载查看

付费下载

下载本文档

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

文档简介

1本章教学目标窗体的常用属性、事件和方法多窗体的显示与隐藏、启动窗体的设置常用公共控件的使用技巧7.1

窗体Windows应用程序的开发平台所有控件的容器每个Windows应用程序都应该至少拥有一个窗体。7.1.1

窗体的常用属性7.1.1窗体的常用属性NameTextSizeBackColorBackgroundImageBackgroundImageLayoutEnabled(true,false)FontFormBorderStyle(FixedSingle,FixedDialog,Sizable)IconLocationStartPosition(Manual,CenterScreen,WindowsDefault)WindowState(Normal,

ized,Minimized)BackgroundImageLayout属性NoneCenterTileZoomStretch7.1.2

窗体的常用事件选择事件窗体的常用事件Click(窗体单击)

DoubleClick

(窗体双击)KeyPress(键盘击键)KeyDown(键盘键按下)MouseDown(鼠标键按下)FormClosing

(窗体正在关闭)FormClosed

(窗体已经关闭)Load

(窗体加载)LocationChanged

(窗 置改变)Resize

(窗体大小改变)观察与思考MouseDown与Click有什么不同?KeyPress与KeyDown有什么不同?实例7.1例7.1

窗体事件的发生过程private

void

Form1_Load(objec der,

EventArgs

e){label1.Text+="窗体加载事件发生\n\n";der,

EventArgs

e)}private

void

Form1_Click(objec{label1.Text+="鼠标单击窗体事件发生\n\n";der,MouseEventArgs

e)}private

void

Form1_MouseDown(objec{label1.Text+="鼠标键按下事件发生\n\n";der,MouseEventArgs

e)}private

void

Form1_MouseUp(objec{label1.Text

+=

"鼠标键

事件发生\n\n";der,FormClosingEventArgs

e)der,FormClosedEventArgs

e)}private

void

Form1_FormClosing(objec{label1.Text+="窗体将要关闭\n\n";}private

void

Form1_FormClosed(objec{MessageBox.Show("窗体已经关闭");}7.1.3

窗体的常用方法Show()

加载并显示非模态窗体Hide()

隐藏窗体Close()

关闭并卸载Refresh()

刷新ShowDialog()加载并显示模态窗体(如

框等)Activate()

把焦点移到窗体上并激活

BringToFront()移到所有窗体的顶层

SendToBack()移到所有窗体的底层

SetBounds

设置窗体的位置和大小我怎么知道一个对象有哪些方法可用?显示窗体的方法Show()

显示非模态窗体ShowDialog()显示模态窗体模态窗体——用户必须在完成它所要求的操作,或者将它关闭之后,否则无法对打开它的主窗体执行任何操作非模态窗体——即使未关闭,或者它所要求的操作未完成,也可以同时操作调用它的主窗体设置窗置和大小的方法SetBounds(

)动态改变窗口位置和大小this.SetBounds(int

x,

int

y,intwidth,

int

height);x、y

水平与垂直坐标width、height

宽度和高度实例7.2//这几个变量必须在此处定义der,

KeyEventArgs

e)例7.2

利用方向键移动窗

置int

pointX,

PointY,

myWidth,

myHeight;private

void

Form1_KeyDown(objec{if

(e.KeyValue

==

37)pointX

-=

10;else

if

(e.KeyValue

==

38)PointY

-=

10;else

if

(e.KeyValue

==

39)pointX

+=

10;else

if

(e.KeyValue

==

40)PointY

+=

10;//"←"的键位置码//窗体左移//"↑"的键位置码//窗体上移//"→"的键位置码//窗体右移//"↓"的键位置码//窗体下移this.SetBounds(pointX,

PointY,

myWidth,

myHeight);der,

EventArgs

e)}private

void

Form1_Load(objec{pointX

=

100;PointY

=

50;myWidth

=

300;myHeight

=

180;//窗体初始位置的水平坐标//窗体初始位置的垂直坐标//窗体的初始宽度//窗体的初始高度this.SetBounds(pointX,

PointY,

myWidth,

myHeight);}实例7.3der,

EventArgse)例7.3

比较模态窗体和非模态窗体private

void

button1_Click(objec{Form

modalForm

=

new

Form();Size

newsize=new

Size(300,150);modalForm.Size=newsize;modalForm.Text="我是模态窗体";modalForm.ShowDialog();der,

EventArgse)}private

void

button2_Click(objec{Form

nonmodalForm

=

new

Form();Size

newsize

=

new

Size(300,

150);nonmodalForm.Size

=

newsize;nonmodalForm.Text="我是非模态窗体";nonmodalForm.Show();}7.1.4

多窗体运用程序7.1.4多窗体运用程序多窗体的显示与隐藏窗体Form1中的事件过程代码private

void

button1_Click(objec der,

EventArgs

e){Form2

newform2

=

new

Form2();newform2.Show();this.Hide();}多窗体的显示与隐藏窗体Form2中的事件过程代码private

void

button1_Click(objec der,

EventArgs

e){Form1

newform1

=

new

Form1();newform1.Show();this.Hide();}设置启动窗体思考应用多窗体时,怎样把处于隐藏状态的Form1真正地关闭?在程序中用什么方法?小结窗体的属性,大部分是可以采取默认值的,需要用户自行设置的并不多,就连表中介绍的那些也不是每次都需要设置的。窗体的事件是由系统设计,并且由程序以外的因素所触发的,要特别注意有些窗体事件发生的先后顺序。窗体是一种特殊的对象,用户在设计阶段设计的一个窗体,它既是类,又是对象,在一个窗体内其它窗体时,必须先创建被 窗体的实例。模态窗体是 框一类的窗体,如果不响应它,就无法对调用它的主窗体执行任何操作。7.2

常用公共控件本次课内容ButtonLabelTextBoxRichTextBoxRadioButtonCheckBoxGroupBox(容器)7.2.1按钮控件按钮的主要属性Text属性设置显示在按钮表面上的文字

“开始(&S)”——组合键Alt+SEnabled属性设置按钮是否可用,防止误操作Visible属性设置按钮的可见性7.2.2文本控件Label不能以交互方式显示内容主要用于显示提示、说明性文字信息文本框TextBox允许用户键盘输入文字信息富文本框RichText可以显示多种类型格式的文本信息Label控件的常用属性Font属性Font属性为环境属性,通常在程序设计阶段设置。如果不设置,就会父控件中的Font属性。Font属性是只读的,程序运行时不能通过赋值来改变。如果要在程序运行期间改变Font属性,必须导入System.Drawing命名空间。实例7.4例7.4

通过执行代码改变Label的属性der,

EventArgs

e)private

void

button1_Click(objec{label1.Text+="朝辞间\n千里江陵一日还\n";label1.Text+="

猿声啼不住\n轻舟已过万重山\n";//背景透明//前景颜色为番茄色label1.BackColor=Color.Transparent;label1.ForeColor=Color.Tomato;label1.Font=new

Font("楷体_GB2312",16,FontStyle.Bold

|

FontStyle.Underline);}实例7.4TextBox控件的常用属性TextBox控件的常用事件TextBox控件的常用方法实例7.5例7.5

在文本框textBox1中用鼠标选择一段文字之后,单击“ ”按钮,被选中的文字便在textBox2中显示;若单击“删除”按钮则将textBox1中被选中文字删除后剩余的内容在textBox2中显示。实例7.5

代码//private

void

button1_Click(objec der,

EventArgse){textBox2.Text

=

textBox1.SelectedText;//被选中的文本label2.Text+="(被选中的字符数为"+textBox1.SelectionLength+"个)";der,EventArgs

e)

//删除}private

void

button2_Click(objec{int

textStart

=textBox1.SelectionStart;

//被选中文字的开始位置int

textLength

=

textBox1.SelectionLength;

//被选中文字的长度string

string1

=

textBox1.Text.Substring(0,

textBox1.SelectionStart);string

string2

=

textBox1.Text.Substring(textLength

+

textStart);textBox2.Text

=

string1

+

string2;label2.Text+="(剩余部分的文字长度为"+textBox2.Text.Length+")";}实例7.6例7.6

创建一个用来输入学生个人基本情况的用户界面,编写程序检验在各文本框中输入的文本信息是否合法。例7.6

代码der,

EventArgse)private

void

textBox1_Validated(objec{if

(textBox1.Text.Length

<

2)

//不足2个字报错label7.Text="

填写不完整";}private

void

textBox2_Validating(objecder,

CancelEventArgs

e){

//如果 不为“男”或“女”则报告出错if(textBox2.Text=="男"||

textBox2.Text=="女")label7.Text="";elselabel7.Text="

填写错误!";}例7.6

代码private

void

textBox3_Validating(objec der,

CancelEventArgs

e){”范围不合理则报告出错//如果“if

(textBox3.Text.Length

>

0){int

age

=

int.Parse(textBox3.Text);if

(age<16)label7.Text="这一位是少年大学生吗?";if(age>35)label7.Text=age+"岁了才读本科,是不是填错了?";}}private

void

textBox3_KeyPress(objec{

//如果“der,

KeyPressEventArgse)”栏输入非数字则

接受if

((e.KeyChar

<

48

||

e.KeyChar

>

57)

&&

e.KeyChar

!=

8)e.Handled

=

true;

//

接受输入的

值}例7.6

代码private

void

textBox5_Validated(objec der,

EventArgse){

//如果 号码长度不足11位则报告出错if(textBox5.Text.Length!=11)label7.Text="

号码应为11位";}private

void

textBox5_KeyPress(objecder,

KeyPressEventArgs

e){

//如果“

号码”栏输入非数字则

接受if

((e.KeyChar

<

48

||

e.KeyChar

>

57)

&&

e.KeyChar

!=

8)e.Handled

=

true;}RichTextBox的常用属性和方法实例7.7例7.7利用RichTextBox控件创建一个非常简单的文档编辑程序。从左到右依次单击“打开文件”等按钮,实现文档编辑功能。实例7.7

代码private

void

button1_Click(objec der,

EventArgs

e){//打开指定路径下的RTF格式文件richTextBox1.LoadFile(@"d:\test1\迪斯尼.rtf",RichTextBoxStreamType.RichText);}private

void

button2_Click(objec der,

EventArgs

e){//设置被选中的文章标题格式(先选中标题文件,然后单击按钮)richTextBox1.SelectionAlignment

=HorizontalAlignment.Center;

//水平居中richTextBox1.SelectionColor

=

Color.Red; //标题颜色为红色richTextBox1.SelectionFont=new

Font("隶书",24,FontStyle.Bold);//设置标题的颜色}private

void

button3_Click(objec der,

EventArgs

e){//用“Disney”替换被选中的“迪斯尼"(先选中文字块,然后单击按钮)richTextBox1.SelectionAlignment=HorizontalAlignment.Left;string

str1=richTextBox1.SelectedText;richTextBox1.SelectedText=str1.Replace("迪斯尼","Disney");}实例7.7

代码private

void

button4_Click(objec der,

EventArgs

e){//撤消刚才的操作if

(richTextBox1.CanUndo

==

true)richTextBox1.Undo();elseMessageBox.Show("不能撤消刚才的操作");}private

void

button5_Click(objec der,

EventArgs

e){//恢复刚才撤消的操作if

(richTextBox1.CanRedo==

true)richTextBox1.Redo();elseMessageBox.Show("不能恢复刚才的操作");}private

void

button6_Click(objec der,

EventArgs

e){//将文件以RTF格式保存到指定路径下

richTextBox1.SaveFile(@"d:\test1\Disney.rtf",RichTextBoxStreamType.RichText);DialogResult

result;result=MessageBox.Show("文件保存已经完成,是否关闭?","保存文件",MessageBoxButtons.YesNo);if

(result

==

DialogResult.Yes)

this.Close();}7.2

常用公共控件本次课内容RadioButtonCheckBoxGroupBox(容器)ListBoxCheckedListBoxComboBoxPictureBoxScrollBarProgressBarImageList

Timer7.2.3

简单选择控件单选按钮RadioButton复选框CheckBox组合框GroupBox1.单选按钮(RadioButton)Checked属性true

被选中false

未被选中在一组单选按钮中,最多只能有一个被选中。Appearance属性Normal,圆形Button,按钮形状CheckedChanged事件在一组单选按钮中改变原先选中的对象时,触发此事件Click事件每次单击单选按钮,都会触发Click事件。连续多次单击同一个单选按钮,最多只能改变Checked属性一次。2.复选框(CheckBox)CheckState属性Checked

选中Unchecked

未选中Indeterminate

无效在一组复选框中,允许任意数量的复选框被选中,甚至全部选中,或者全部不选。ThreeState属性true,允许CheckState属性有上述3种状态false,CheckState属性就只能有Checked(选中)和Unchecked(未选中)两种状态。CheckedChanged事件当Checked属性改变时,就会触发该事件。实例7.8例7.8利用单选按钮、复选框和群组框,对Label控件中文字的显示效果进行设置。实例7.8

代码(1)private

void

button1_Click(objec der,

EventArgs

e){float

fontSize

=

label1.Font.Size;FontStyle

style

=

FontStyle.Regular;FontFamily

family

=

label1.Font.FontFamily;//字体设置if

(radioButton1.Checked

==

true)family=newFontFamily("黑体");else

if

(radioButton2.Checked==

true)family=newFontFamily("楷体_gb2312");else

if

(radioButton3.Checked==

true)family=newFontFamily("宋体");实例7.8

代码(2)//颜色设置if

(radioButton4.Checked)label1.ForeColor

=

Color.Red;else

if(radioButton5.Checked)label1.ForeColor

=

Color.Green;else

if(radioButton6.Checked)label1.ForeColor

=

Color.Blue;if(checkBox1.CheckState==CheckState.Checked)

//字型设置style

|=FontStyle.Bold;if

(checkBox2.CheckState

==

CheckState.Checked)style

|=

FontStyle.Italic;if

(checkBox3.CheckState

==

CheckState.Checked)style

|=

FontStyle.Underline;label1.Font=new

Font(family,fontSize,style);

//显示效果}7.2.4

列表选择控件列表选择控件包括列表框(ListBox)复选列表框(CheckedListBox)组合框(ComboBox)主要用来实现较多个选项的交互式选择操作ListBox的常用属性ListBox的常用事件和方法SelectedIndices[]属性被选中列表框的索引值实例7.9例7.9

使用ListBox控件,创建用于选修课选择的Windows窗体应用程序(每人限选5门)实例7.9程序代码der,

EventArgse)private

void

Form1_Load(objec{listBox1.SelectionMode=SelectionMode.MultiExtended;//允许一次选中多项der,

EventArgse)}private

void

button1_Click(objec{label1.Text

=

"";int

number

=

0;//遍历SelectedItems集合foreach

(string

item

in

listBox1.SelectedItems){//逐行输出每个被选中的项label1.Text

+=

"*

"

+

item

+

"\n";number++;if

(number

>=

5)

break;//达到规定的门数,退出循环}}复选列表框(CheckedListBox)实例7.10实例7.10程序代码der,

EventArgse)private

void

Form1_Load(objec{checkedListBox1.CheckOnClick

=

true;//第一次单击复选框时即改变其状态der,

EventArgse)}private

void

button1_Click(objec{label1.Text

=

"";int

number

=

0;foreach

(string

item

in

checkedListBox1.CheckedItems){//逐行输出每个被选中的项label1.Text

+=

"*

"

+

item

+

"\n";number++;if

(number

>=

5)

break;}}组合框(ComboBox)例7.11例7.11在程序启动时将数据选项添加到组合框

ComboBox1中(不允许以交互方式输入另外的选项),单击列表中的任一选项之后,在label1中显示出自己最喜欢的一位运动员。实例7.11

代码private

void

comboBox1_SelectedIndexChanged(objec der,

EventArgs

e){label1.Text

=

"您最喜欢的运动员是:\n\n "

+comboBox1.Text;der,

EventArgse)}private

void

Form1_Load(objec{comboBox1.DropDownStyle

=

ComboBoxStyle.DropDownList;comboBox1.MaxDropDownItems

=

8;",

" ",

" ",

" "

};string[]

item

=

{

" ",

"for

(int

i

=

0;

i

<

item.Length;

i++)comboBox1.Items.Add(item[i]);string[]

newitem={

" ",

"",

"",

"",

""

};comboBox1.Items.AddRange(newitem);}7.2.5框控件(PictureBox)实例7.12例7.12

列表框中选择SizeMode例7.12

代码(1)der,

EventArgs

e)private

voidlistBox1_SelectedIndexChanged(objec{//重新设置 框的位置和大小pictureBox1.SetBounds(10,

10,

200,200);switch(listBox1.Text){case

"自动大小(AutoSize)":

//自动改变 框的大小{pictureBox1.SizeMode

=

PictureBoxSizeMode.AutoSize;break;居中(CenterImage)":

//使

在 框中居中显示}case

"{pictureBox1.SizeMode

=

PictureBoxSizeMode.CenterImage;break;//使

以 框左上角为起点显示}case“常规显示(Normal)”:{pictureBox1.SizeMode

=

PictureBoxSizeMode.Normal;break;}例7.12

代码(2)//占满整个框,不能确保原宽高比不变case“

拉伸(StretchImage)”:{pictureBox1.SizeMode

=

PictureBoxSizeMode.StretchImage;break;//保持原

宽高比不变}case"优化缩放(Zoom)":{pictureBox1.SizeMode

=

PictureBoxSizeMode.Zoom;break;}}}实例7.13到框,并例7.13

在程序运行期间加载且通过手工操作实现动画效果例7.13

代码private

void

Form1_Load(objec der,

EventArgs

e){pictureBox1.SizeMode=

PictureBoxSizeMode.StretchImage;pictureBox2.SizeMode

=

PictureBoxSizeMode.StretchImage;der,

EventArgs

e)der,

EventArgs

e)}private

void

button1_Click(objec{pictureBox1.BringToFront();pictureBox1.Load(@"girl1.jpg");pictureBox2.Load(@"girl2.jpg");}private

void

button2_Click(objec{pictureBox1.Visible

=!pictureBox1.Visible;}7.2.6

滚动条控件实例7.14例7.14

利用滚动条控制窗体上 控件中显示文字的大小,并且使

控件始终保持在水平居中的位置实例7.14代码(1)der,

EventArgs

e)private

void

Form1_Load(objec{label1.Text="学无止境";label1.Font=new

Font("楷体_gb2312",20,FontStyle.Bold);label1.ForeColor

=

Color.BlueViolet;int

x

=

(this.Width

-

label1.Width)

/

2;

////控件在窗体上的水平位置控件在窗体上的垂直位置int

y

=

50;Point

mypoint

=

new

Point(x,y);label1.Location

=

mypoint;//hScrollBar1.Dock

=

DockStyle.Bottom;保持在窗体上水平居中的位置//滚动条停靠在窗体底部//限制最大字号为80//限制最小字号为8hScrollBar1. um

=

80;hScrollBar1.Minimum

=

8;hScrollBar1.Value

=

20;}实例7.14代码(2)der,

ScrollEventArgs

e)private

void

hScrollBar1_Scroll(objec{//用滚动条的Value属性控制显示字号int

myfontsize=hScrollBar1.Value;label1.Font=new

Font("楷体_gb2312",myfontsize,FontStyle.Bold);int

x

=

(this.Width

-

label1.Width)

/

2;int

y

=

50;Point

mypoint

=

new

Point(x,

y);label1.Location=mypoint;

//

在窗体上保持水平居中的位置}7.2.7进度条(ProgressBar)常用属性:Value属性决定进度条中被填充部分的大小,用来表示事务处理的当前进度Max、Min

属性用于设置进度条的上、下界限,用来表示任务的整个行程。要表现事务处理过程的进展情况,必须实时地改变进度条的Value属性值。当Value=Min时,进度条中无颜色填充;当Value>=Max时,进度条被颜色填满。例7.15

用进度条指示程序执行进度情况der,

EventArgs

e)private

void

Form1_Load(objec{progressBar1. um

=

1000;progressBar1.Minimum

=

0;//进度条填满时的对应值//进度条空白时的对应值der,

EventArgs

e)//开始um;

i++)}private

void

button1_Click(objec{label2.Text

=

"";for

(int

i

=

0;

i

<

progressBar1.for

(long

j

=

0;

j

<

300000;

j++)progressBar1.Value=

i;label2.Text="程序执行结束!";}7.3

常用组件在设计视图中,双击工具箱中的组件图标,它就出现在窗体下面的灰域中,而不占据窗体上的位置。列表组件定时器组件7.3.1列表组件(ImageList)ImageList本身不能用来显示了一个Images集合,可以用来,但它提供成组的图片,供窗体上的其它控件使用,每个

可以通过其索引值或键值来实例7.16例7.16

将预先准备好的一组

加载到ImageList。快速连续单击“动画效果”按钮,将ImageList中的 依次取出到 框中显示,使之周而复始地循环,实现动画效果实例7.16代码(1)int

i

=

0;

//将按钮单击事件过程重复执行时 的变量定义在过程的前面private

void

Form1_Load(objec der,

EventArgse){string

imagefile;

//用来表示 文件名的字符串变量imageList1.ImageSize

=

new

Size(256,

210);

//规定载入 的显示尺寸//将12张 依次载入ImageListfor(int

k

=

1;

k

<=

12;

k++){if

(k

<

10)//凑成 文件名runboy01

~runboy12imagefile

=

"runboy0"

+

k.ToString()

+

".gif";elseimagefile="runboy"+k.ToString()+".gif";imageList1.Images.Add(Image.FromFile(imagefile));//加载}pictureBox1.Image

=

imageList1.Images[0];

//显示ImageList的首张pictureBox1.SizeMode

=

PictureBoxSizeMode.AutoSize;//调整 框大小}实例7.16代码(2)der,

EventArgs

e)//动画效果private

void

button1_Click(objec{//在 框中显示ImageList的第i张pictureBox1.Image

=

imageList1.Images[i];i++;//如果最后一张//调整指针,指向下一张已显示,重新指向开头的if

(i

>=

imageList1.Images.Count)

i

=

0;der,

EventArgs

e)//结束程序}private

void

button2_Click(objec{this.Close();}7.3.2

定时器组件主要功能:按规定的时间间隔(Interval),重复地触发Tick事件常用属性Interval属性设置Tick事件的触发时间间隔,以毫秒为单位(2)Enabled属性为true时,每当Interval规定的时间间隔到达,就能触发一次Tick事件。为false时,定时器处于休止状态,不再触发Tick事件。实例7.17例7.17

将预先准备好的一组加载到ImageList。单击“

动画”按钮,将ImageList中的图框中显示,并周而复始地循环,片依次取出到实现动画效果例7.17

代码(1)der,EventArgs

e)

//定时private

void

timer1_Tick(objec{//在 框中显示ImageList的第i张pictureBox1.Image

=

imageList1.Images[i];i++;

//调整指针,指向下一张//如果最后一张

已显示,重新指向开头的if

(i>=

imageList1.Images.Count)

i=

0;}例7.17

代码(2)private

void

button1_Click(objecder,

EventArgs

e)动画"){

//“

”或“暂停”if

(button1.Text

==

"{timer1.Start();button1.Text

=

"暂停

"

温馨提示

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

评论

0/150

提交评论