一、Button:按钮控件
按钮主要用于提交页面的内容,或者是确认某种操作等。
按钮常用的属性包括在按钮中显示的文字 (Text) 以及按钮外观设置的属性,最常用的事件是单击事件。
1.例:
实现一个简单的用户注册功能,并将提交的注册信息显示在新窗体的文本框中。
本例的用户注册界面中仅包括用户名和密码,通过单击“注册”按钮跳转到新窗体中并显示注册的用户名和密码,实现该功能分别使用 RegForm 窗体和 MainForm 窗体。
步骤如下:
1)首先是创建一个Windows窗体应用。
2)添加3个Label标签控件、3个TextBox表单控件、2个Button按钮控件。
3)布局,修改相关属性。
这里基本上就是在属性面板中,修改Text属性。
如果还有其他需求,可以再进行其他的修改。
4)然后双击两个按钮控件,直接生成单击事件。
编辑代码:
private void button1_Click(object sender, EventArgs e) { string name = textBox1.Text; string pwd = textBox2.Text; string repwd = textBox3.Text; if (string.IsNullOrEmpty(name)) { MessageBox.Show("用户名不能为空!"); return; } else if (string.IsNullOrEmpty(textBox2.Text)) { MessageBox.Show("密码不能为空!"); return; } else if (!textBox2.Text.Equals(textBox3.Text)) { MessageBox.Show("两次输入的密码不一致!"); return; } //将用户名和密码传递到主窗体中 Form2 mainForm = new Form2(name, pwd); mainForm.Show(); }private void button2_Click(object sender, EventArgs e) { //关闭窗体 this.Close(); }
分析:
首先是编辑“确定”按钮的单击事件,也就是 button1_Click()方法。
这里的button1,是默认的Name属性值。
里面的代码是:
首先获取表单的内容,并存储进字符串的变量中。
然后通过判断,这里采用的是if-else if-else if的方式。
目的是将三个如果进行了连接,而不是各自独立。
并且还采用return语句,目的是一旦返回的是false,就直接结束程序调用。也就不会执行后面的窗体打开。
而.IsNullOrEmpty()方法,用于字符串判断。
相同,返回的是true。
不相同,返回的是false。
然后是“取消”按钮的单击事件,也就是button2_Click()方法里的编辑。
主要用于关闭窗口。
注意:
由于这里还没有创建第二个窗体,所以第22行会报错。
因为Form2是第二个窗体的Name属性名。
5)然后再创建一个新窗体。
6)双击窗体,进入编辑页面,代码如下:
public partial class Form2 : Form { public Form2(string name, string pwd) { InitializeComponent(); label2.Text = "用户名:" + name; label3.Text = "密 码:" + pwd; } }
分析:
因为上面的窗体存在参数,所以在这里需要追加参数。
也就在第3行追加,参数。
label2和label3,是Label控件的Name属性名。
7)运行结果
然后输入内容:
输入错了,就提示。
这里要想让密码以“*”号显示,就需要修改属性:
如果输入正确,就弹出第二个窗体。
二、RadioButton:单选按钮控件
在 C# 语言中 RadioButton 是单选按钮控件,多个 RadioButton 控件可以为一组,这一组内的 RadioButton 控件只能有一个被选中。
1.例
完成选择用户权限的操作,并在消息框中显示所选的权限名。
根据题目要求,用户权限包括“普通用户”“年卡用户”“VIP 用户”,因此需要 3 个单选按钮。
步骤如下:
1)首先是创建一个Windows应用程序,然后进行布局。
一个Label标签控件,三个RadioButton单选按钮控件,一个Button按钮控件。
总之也就是改变Text属性值。
2)然后双击“确定”按钮,生成点击事件。
代码如下:
private void button1_Click_1(object sender, EventArgs e) { string msg = ""; if (radioButton1.Checked) { msg = radioButton1.Text; } else if (radioButton2.Checked) { msg = radioButton2.Text; } else if (radioButton3.Checked) { msg = radioButton3.Text; } MessageBox.Show("您选择的权限是:" + msg, "提示"); }
分析:
首先定义一个字符串变量。
然后就判断哪个单选按钮被点选,并将被点选的值返回给字符串变量。
radioButton2.Checked,
点前面的是单选按钮控件的Name属性值。
点后面的是控件的属性。如果被点选了,返回的就是true。
最后使用一个消息框进行输出。
提示:
这里的单选按钮,只要在一个容器中,就属于同一组。
3)运行结果:
提示:Checked 属性可用于判断单选按钮是否被选中。如果该属性的返回值为 True,则代表选中;如果返回值为 False,则表示未选中。
三、CheckBox:复选框控件
在 C# 语言中复选框 (CheckBox) 是用于选择多个选项的操作。
复选框主要的属性是:Name、Text、Checked。
其中:
-
Name:表示这个组件的名称;
Text:表示这个组件的标题;
Checked:表示这个组件是否已经选中。
主要的事件就是 CheckedChanged 事件。
1.例
完成选择用户爱好的操作,并在消息框中显示所选的爱好。
根据题目要求,用户爱好包括篮球、排球、羽毛球、乒乓球、游泳、阅读、写作,因此需要 7 个复选框。
步骤如下:
1)创建Windows应用程序,并布局。
主要有一个Label标签控件、七个CheckBox复选框控件、一个Button按钮控件。
2)双击“确定”按钮,实现单击事件。
private void button1_Click_1(object sender, EventArgs e) { string msg = ""; if (checkBox1.Checked) { msg = msg + " " + checkBox1.Text; } if (checkBox2.Checked) { msg = msg + " " + checkBox2.Text; } if (checkBox3.Checked) { msg = msg + " " + checkBox3.Text; } if (checkBox4.Checked) { msg = msg + " " + checkBox4.Text; } if (checkBox5.Checked) { msg = msg + " " + checkBox5.Text; } if (checkBox6.Checked) { msg = msg + " " + checkBox6.Text; } if (checkBox7.Checked) { msg = msg + " " + checkBox7.Text; } if (msg != "") { MessageBox.Show("您选择的爱好是:" + msg, "提示"); } else { MessageBox.Show("您没有选择爱好", "提示"); } }
分析:
先定义一个字符串变量。
然后进行if语句判断。
如果选中,就追加到变量中。
并且也进行了消息框的提示。
运行结果:
2.例
由于上述逐一判断太过麻烦,所以需要进行优化。
而界面上的每一个控件都继承自 Control 类,所以直接判断界面上的控件是否为复选框即可,实现上述功能的代码可以简化为如下。
private void button1_Click(object sender, EventArgs e){ string msg = ""; foreach(Control c in Controls) { //判断控件是否为复选框控件 if(c is CheckBox) { if (((CheckBox)c).Checked) { msg = msg + " " + ((CheckBox)c).Text; } } } if(msg != "") { MessageBox.Show("您选择的爱好是:" + msg, "提示"); } else { MessageBox.Show("您没有选择爱好", "提示"); }}
分析:
因为界面上的每一个控件都继承自 Control 类,所以只要获取这个类,并进行遍历就好。
所以首先通过foreach进行遍历出所以的组件。
再通过组件进行判断,哪些是复选框组件。
然后再强制强制转换的方式,筛选出被选中的组件,并将组件的Text属性加选到之前定义的字符串变量中。
而Control 除了可以在界面上查找复选框以外,还可以查找其他控件。