C#应用实训|任务2 注册窗体实现
发布者:唯众
布时间:2020-12-13 16:40:00
点击量:
任务描述
显示会员注册窗体,用户在窗体中输入注册信息,并能上传用户照片功能,注册信息输入完毕后,单击注册按钮,弹出是否注册消息对话框,单击消息对话框的“是”按钮,弹出显示用户注册信息窗体;单击窗体“取消”按钮,关闭会员注册窗体。
知识引入
- 单选按钮(RadioButton)和分组框(GroupBox)
单选按钮(RadioButton)控件支持用户勾选和不勾选两种状态,在文字前面用一个可以勾选的圆点来表示。当同一个“容器”中有多个RadioButton控件时,它们自动被识别为一组,一次只能有一个RadioButton控件被选中。所以,如果有三个选项,例如Red、Blue、Green,若Red被选中,而用户在去单击Blue,则Red会自动取消选中。这种特性适合于允许用户仅选取一个选项的情况。例如,用户对于性别的选择。
RadioButton常用的事件和属性如表4-5所示。
表4-5 RadioButton常用的事件和属性
属性 |
描述 |
Name |
获取或设置控件的名称 |
CheckBox |
布尔值,该值指示是否已选中控件 |
方法 |
描述 |
Focus |
为控件设置输入焦点 |
Hide |
对用户隐藏控件 |
Show |
向用户显示控件 |
事件 |
描述 |
Click |
在单击控件时发生 |
CheckedChanged |
当Checked属性的值更改的时发生 |
对于“容器”的概念,所谓“容器”就是可以装控件的对象,比如窗体本身就是一个容器,分组框控件也是一种典型的容器控件,可以使用GroupBox对单选按钮进行分组。在WinForm应用程序开发中,RadioButton控件经常和GroupBox控件结合起来使用。单选按钮的特点是当选中其中的一个,其余自动关闭,当需要在同一窗体中建立几组相互独立的单选按钮时,就需用GroupBox控件将第一组单选按钮框起来,这样在一个框内对单选按钮的操作,就不会影响框外其他组的单选按钮了。
编码标准:单选按钮控件前面加rad前缀,分组控件前面加grp前缀。
【
例4-2】
单选按钮、分组框示例,如图4-14所示:
图4-14单选按钮、分组框示例
- 复选框(CheckBox)
复选框(CheckBox)和单选按钮一样,也支持勾选和不勾选两种状态,在文字前面用一个勾选的框来表示。所不同的是,复选框可以允许用户选取多个选项。
在实际应用中,多个复选框可以同时存在,并且相互独立。即在多个复选框中,同时可以有一个或多外被选中。
复选框的常用属性、方法和事件与单选按钮非常相似,不再重复列出。
- 列表框(ListBox)和组合框(ComboBox)
(1)列表框(ListBox)
列表框控件显示一个项的列表,用户可以从中选择一项或多项。列表框中的每个选项被称为项(Item)。列表框控件的主要属性、方法和事件如表4-6所示。
表4-6 ListBox常用的事件和属性
属性 |
说明 |
Items |
获取ListBox里所有的项 |
SelectedIndex |
ListBox中当前选中项从零开始的索引 |
SelectedItem |
获取ListBox中当前选中的项 |
Text |
获取ListBox中当前选中项的文本 |
方法 |
说明 |
ClearSelected |
清除ListBox中的所有选中的项 |
事件 |
说明 |
SelectedIndexChanged |
ListBox控件当前选择的项的索引变化时只需 |
向列表框控件里面添加选项有两种方式,一种方式是通过设计窗体的属性对话框,先选中ListBox控件,然后选择属性对话框里的Item属性,进入到字符创结合编辑器对话框,进行选项添加;还有一种方式是通过编写代码的方式。
(2)组合框(ComboBox)
组合框也叫下拉列表框,可以通过下拉列表框列出用户可做出的选择,并允许用户选择其中一项,程序可以读取被选择的项,从而得到用户数据。组合框控件(ComboBox)与列表框控件(ListBox)的常用属性和事件非常相似,如表4-7所示。
表4-7 ComboBox常用的事件和属性
属性 |
说明 |
DropDownStyle |
获取或设置组合框控件的样式,为一个枚举值 |
Items |
获取ComboBox里的所有项 |
SelectedIndex |
获取ComboBox中当前选中项的从零开始的索引 |
SelectedItem |
获取ComboBox中的当前选中的项 |
Text |
获取ComboBox中当前选项的文本 |
方法 |
说明 |
SelectAll |
选择ComboBox可编辑部分文本中所有的文本 |
事件 |
说明 |
SelectedIndexChanged |
在SelectedIndex属性更改后发生 |
编码标准:在列表框控件名前加lst前缀,在下拉列表控件名前加cbo前缀。
- 图片框(PictureBox)和图像列表(ImageList)
(1)图片框(PictureBox)
图片框(PictureBox)控件是专门用于显示图片的控件。可用于显示包括*.bmp(位图文件)、*.gif、*.jpg、*.ico(图标文件)等格式图形文件。PictureBox控件常用的属性和方法如表4-8所示。
表4-8 PictureBox常用的属性和方法
属性 |
说明 |
Image |
获取或设置PictureBox显示的图片 |
SizeMode |
设置如何显示图像。可以指定集中不同的模式如AutoSize、CenterImage、Normal和StretchImage。默认为Normal |
方法 |
说明 |
Show |
用于向用户显示控件 |
(2)图像列表(ImageList)
图像列表(ImageList)控件用于存储其他控件(如PictureBox控件等)需要的图像。用户在图像列表中保存的图像可以使图片(*.bmp、*.jpg、*.gif等)和图标(*.ico)。图像列表控件和定时器控件一样,添加该控件不会在窗体上显示,而是显示在窗体下方。
图像列表控件中的图像保存它的Images属性中,这个属性是一个集合,可以在设计窗体下通过单击“属性”窗体中的Images旁边的“…”按钮打开“图像集合编辑器”对话框,为其添加图像,如图4-15所示。
图4-15 “图像集合编辑器”对话框
任务实现
会员管理系统注册窗体(FrmRegister)实现。
【
例4-3】
1. 设计会员管理系统显示会员注册信息窗体FrmInfo,如图4-16所示
图4-16 会员注册窗体
打开FrmInfo窗体,为其添加一个公共成员方法,代码如下:
public void showUserInfo(string userName, string password, string city, string member, string sex, string hobby, string shen, string path)
{
txtInfo.Text = "姓名:" + userName;
txtInfo.Text += "\r\n密码:" + password;
txtInfo.Text += "\r\n性别:" + sex;
txtInfo.Text += "\r\n爱好:" + hobby;
txtInfo.Text += "\r\n省份:" + shen;
txtInfo.Text += "\r\n城市:" + city;
txtInfo.Text += "\r\n备注:" + member;
txtInfo.Text += "\r\n图片文件路径:" + path;
}
2. 设计会员管理系统注册窗体FrmRegister,如图4-17所示
图4-17 会员注册窗体
(1)双击FrmRegister窗体的“注册”按钮,为其添加如下代码:
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog ofdg = new OpenFileDialog();
ofdg.InitialDirectory = "e:\\";
DialogResult dr = ofdg.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
path = ofdg.FileName;
picImg.Image = Image.FromFile(path);
}
}
(2)为省份组合框
SelectedIndexChanged事件添加如下代码:
private void cmbShen_SelectedIndexChanged(object sender, EventArgs e)
{
lstCity.Items.Clear();
int index = cmbShen.SelectedIndex;
if (index == 0)
{
lstCity.Items.Add("石家庄市");
lstCity.Items.Add("保定市");
}
if (index == 1)
{
lstCity.Items.Add("武汉市");
lstCity.Items.Add("黄冈市");
lstCity.Items.Add("荆州市");
}
if (index == 2)
{
lstCity.Items.Add("长沙市");
lstCity.Items.Add("湘潭市");
lstCity.Items.Add("岳阳市");
}
if (index == 3)
{
lstCity.Items.Add("广州市");
lstCity.Items.Add("东莞市");
lstCity.Items.Add("深圳市");
}
}
(3)双击FrmRegister窗体的“注册”按钮,为其添加如下代码:
private void btnReg_Click(object sender, EventArgs e)
{
string userName = txtUser.Text; //获取用户名
string password = txtPwd.Text; //获取密码
//获取性别
string sex = "";
if (rdoMale.Checked)
{
sex = rdoMale.Text;
}
else if (rdoFemale.Checked)
{
sex = "女";
}
else
{
sex = "未选择";
}
//获取爱好
string hobby = "";
foreach (CheckBox chk in grpHobby.Controls)
{
if (chk.Checked)
{
hobby += chk.Text;
}
}
//获取省份
string shen = cmbShen.Text;
string city = ""; //城市
int count = lstCity.SelectedItems.Count; //获取所有被选中的城市数量
for (int i = 0; i < count; i++)
{
city += lstCity.SelectedItems[i].ToString(); //SelectedItems[i]:表示获取指定索引位置的项
}
string member = txtMember.Text; //获取备注
DialogResult dr = MessageBox.Show("是否注册?", "提示框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == System.Windows.Forms.DialogResult.Yes)//如果用户选择的是“是”
{
FrmInfo fi = new FrmInfo(); //创建一个窗体对象
fi.Show(); //弹出窗体
fi.showUserInfo(userName, password, city, member, sex, hobby, shen, path);
}
}
(4)双击FrmRegister窗体的“取消”按钮,为其添加如下代码:
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
任务小结
- WinForm中单选按钮的使用。
- 可以使用分组框对控件进行分组。
- WinForm中复选框的使用。
- 用PictureBox可显示图片入。
上一篇:C#应用实训|任务1 登陆窗体实现
下一篇:C#应用实训|任务3 主窗体功能实现