-
实训四
WinForms
程序设计初步
实训目的:
1
、
理解
Windows
窗体
2
、
使用基本控件如标签、文本、按钮、列表框和组合框
3
、
掌握窗体的常用属性和方法
4
、
5
、
6
、
使用<
/p>
WinForms
中的高级控件
?
单选按钮
?
图片框
7
、
8
、
9
、
?
选项卡控件
?
滚动条
?
进度条
实训内容:
?
建立个人简历的
< br>Windows
应用程序。
?
建立一个模拟的计算器应用程序。
?
建立一个媒体播放机应用程序。
实训设备仪器:
PC50
台,要求:
windows7/xp/2000/2003
p>
操作系统,配置
Vc#2005/2008
运行环境,安装
SQL
Server2000/2005/2
008
数据库管理系统
实训步骤:
Windows
窗体是
Visual
Studio .NET
提供的集成开发环境(
IDE
),可用于
Windows
应用程序开发。
p>
它带有可用于创建
GUI
(
Graphical User
Interface,
图形用户界面)的所有现成界面组件。
1
:创建
Windows
窗体个人简历应用程序
问题
<
/p>
请编写一个简单的个人简历程序,要求可以通过文本框输入姓名,通过单选按钮设置性别,
通过下拉
列表框选择文化程度,通过文本区域填写其他个人信息;通过文件对话框选择照
片并显示;通过两个下拉
列表框来关联选择籍贯。
指导教师分析解题思路
该问题需要开发一个窗体,
要求对用
户的简历信息进行登记。该应用程序主要用到按钮、
文本输入框、
图片显示框、下拉列表框和列表框等控件。
分析
<
/p>
主要通过对窗体和各控件相应的事件处理函数进行编程,包括窗体的
Load
、下拉框的
SelectedIndexChang
ed
、按钮的
Click
事件。
参考步骤:
先看看窗体的界面效果:
图
5.1
登录屏幕
(
1
)新建一个名为“
PersonalResume
”的基于
Window
s
应用程序的项目。
(
2
)将文
件“
”重命名为“
”。
(
3
)
设计窗体,
< br>方法是添加五个标签控件、
一个文本框、两个按钮、两个单选按钮、
一个图片显示框、
一个下拉列表框和列表框。如表
5
.1
所示列出了每个控件的属性。
表
5.1
窗体的控件属性
控件类型
Label
Label
Label
Label
Label
TextBox
RadioButton
RadioButton
ComboBox
Name
属性
lab_name
lab_sex
lab_nativePlace
lab_photo
lab_otherInfo
tbx_name
rbn_male
rbn_female
cbx_province
Text
文本
姓名:
性别:
籍贯:
照片:
其他信息:
男性
女性
说明
ListBox
PictureBox
RichTextBox
Button
Button
lbx_city
pbx_photo
rtbx_otherInfo
btn_browse
btn_OK
浏
览
确
定
(<
/p>
4
)在窗体的
Load
< br>事件中编写下列代码。
private
void PersonInfo_Load(object sender, EventArgs e)
{
cbx_(
浙江省
cbx_(
江苏省
cbx_edIndex = 0;
}
(
5
)在<
/p>
cbx_province
的
Selec
tedIndexChanged
事件中编写下列代码。
private void
cbx_province_SelectedIndexChanged(object sender,
EventArgs e)
{
if (cbx_edItem != null)
{
string provinceStr =
cbx_ng().Trim();
string[] zjCitys ={
杭州市
宁波市
温州市
绍兴市
台州市
湖州市
金
华市
嘉兴市
衢州市
丽水市
舟山市
string[] jsCitys ={
常州市
淮安市
连云港市
南京市
南通市
苏
州市
宿迁市
泰州市
无锡市
徐州市
盐城市
扬州市
镇江市
lbx_(); //
清空所有
的
Item
项
switch (provinceStr)
{
case
浙江省
lbx_ge(zjCitys); //
添加浙江省的城市
break;
case
江苏省
lbx_ge(jsCitys); //
添加江苏省的城市
break;
}
}
}
(
6
)在
btn_b
rowse
的
Click
事件中编写下
列代码。
private void
btn_browse_Click(object sender, EventArgs e)
{
OpenFileDialog imageDialog = new OpenFileDialog();
=
(*.GIF)|*.GIF|PNG(*.png)|*.png
=
选择照片
if (alog() == )
{
pbx_ocation = me;
}
}
(
7
p>
)在
btn_OK
的
Click
事件中编写下列代码。
private void btn_OK_Click(object sender, EventArgs
e)
{
if
(tbx_ ==
{
(
请填写姓名!
提示
< br>
ation);
return;
}
if
(lbx_edItem == null)
{
(
请选择籍贯!
提示
ation);
return;
}
(<
/p>
你的简历信息将会保存到数据库中,
n
以
便招聘企业查询!
提示
, ation);
();
}
(
8
p>
)完整的代码如下:
using
System;
using c;
using
entModel;
using
using g;
using
using
namespace PersonalResume
{
public partial class PersonInfo :
Form
{
public
PersonInfo()
{
InitializeComponent();
}
private void
cbx_province_SelectedIndexChanged(object sender,
EventArgs e)
{
if (cbx_edItem != null)
{
string provinceStr =
cbx_ng().Trim();
string[] zjCitys ={
杭州市
宁波市
温州市
绍兴市
台州市
湖州市
金
华
市
嘉兴市
p>
衢州市
丽水市
p>
舟山市
string[] jsCitys ={
常州市
淮安市
连云港市
南京市
南通市
苏州
市
宿迁市
p>
泰州市
无锡市
< br>徐州市
盐城市
< br>
,
扬州市
镇江市
lbx_();
//
清空所有的
Item
项
switch
(provinceStr)
{
case
浙江省
lbx_ge(zjCitys); //
添加浙江省的城市
break;
case
江苏省
lbx_ge(jsCitys); //
添加江苏省的城市
break;
}
}
}
private
void btn_browse_Click(object sender, EventArgs e)
{
OpenFileDialog imageDialog = new OpenFileDialog();
=
(*.GIF)|*.GIF|PNG(*.png)|*.png
=
选择照片
if (alog() == )
{
pbx_ocation = me;
}
}
private void
btn_OK_Click(object sender, EventArgs e)
{
if
(tbx_ ==
{
(
请填写姓名!
提示
< br>
ation);
return;
}
if
(lbx_edItem == null)
{
(
请选择籍贯!
提示
ation);
return;
}
(<
/p>
你的简历信息将会保存到数据库中,
n
以
便招聘企业查询!
提示
, ation);
();
}
private void
PersonInfo_Load(object sender, EventArgs e)
{
cbx_(
浙江省
cbx_(
江苏省
cbx_edIndex = 0;
}
}
}
(
9
)通过从菜单中选择“生成”→“生成解决方案”,来生成
该解决方案。
< br>(
10
)通过从菜单中选择“调试”
→“开始执行(不调试)”选项来执行此应用程序。
程序运行效果图
2:创建一个计算器应用程序
问题
构建一个简单的计算器
指导
问题说明
该计算器提供加减乘除功能,支持小数输入。
分析
<
/p>
该问题需要一个窗体,添加
0-9
数字按
钮,和一个小数点按钮;
4
个数学运算符按钮、一个清除按钮<
/p>
和一个等号(计算)按钮;一个文本框用来显示输入的数和计算结果。
参考步骤:
新建一个
“
Windows
”应用程序项目。将“
”文件的名称更改为“
”。
(1)在
Button1-Button9
单击事件处理函数如下:
private void
button0_Click(object sender, EventArgs e)
{
if (bl
nClear)//
如果准备输入下一个加数,应先清除
tex
tBox1
显示内容
{
=
blnClear = false;
}
Button b1 = (Button)sender;
if ( !=
+=
else
=
}
<
/p>
(2)为“
.
”按钮事件处理函数添加如
下代码:
private void
btn_dot_Click(object sender, EventArgs e)
{
if
(blnClear) //
如果准备输入下一个数,应先清除
textBox1
显示内容
{
=
blnClear = false;
}
int n = f(
if (n ==
-1)//
如果没有小数点,增加小数点,防止多次输入小数点
+=
}
(3)在加、减、乘、除单击事件处理函数如下:
private void btn_add_Click(object
sender, EventArgs e)
{
double dbSecond = le();
if
(!blnClear)//
如果未输入第二个操作数,不运算
switch
(strOper)//
按记录的运算符号运算
{
case
sum +=
dbSecond;
break;
case
sum -=
dbSecond;
break;
case
sum *=
dbSecond;
break;
case
sum /=
dbSecond;
break;
}
if (sender == btn_add)
strOper =
if (sender ==
btn_sub)
strOper =
if (sender == btn_mul)
strOper =
if (sender == btn_div)
strOper =
if (sender ==
btn_equ)
strOper =
= ng(sum);
blnClear = true;
}
(4)完整的代码如下:
using System;
using c;
using entModel;
using
using g;
using
using
namespace e3_22
{
public partial class
Calculator : Form
{
double sum = 0;
bool blnClear =
false;
string strOper =
public Calculator()
{
InitializeComponent();
}
private
void button0_Click(object sender, EventArgs e)
{
if (bl
nClear)//
如果准备输入下一个加数,应先清除
tex
tBox1
显示内容
{
=
blnClear = false;
}
Button b1 = (Button)sender;
if ( !=
+=
else
=
}
private void btn_dot_Click(object sender,
EventArgs e)
{
if (blnClear) //
如果准备输入下一个数,应先清除
< br>textBox1
显示内容
{
=
blnClear = false;
}
int n = f(
if (n ==
-1)//
如果没有小数点,增加小数点,防止多次输入小数点
+=
}
private void
btn_add_Click(object sender, EventArgs e)
{
double
dbSecond = le();
if
(!blnClear)//
如果未输入第二个操作数,不运算
switch
(strOper)//
按记录的运算符号运算
{
case
sum +=
dbSecond;
break;
case
sum -=
dbSecond;
break;
case
sum *=
dbSecond;
break;
case
sum /=
dbSecond;
break;
}
if (sender == btn_add)
strOper =
if (sender ==
btn_sub)
strOper =
if (sender == btn_mul)
strOper =