一、CheckedListBox:复选列表框控件
复选列表框显示的效果与复选框类似,但在选择多个选项时操作比一般的复选框更方便。
1.例
使用复选列表框完成选购水果的操作。
根据题目要求,创建一个名为 CheckedListBox 窗体,在复选列表框中添加 6 种水果, 单击“购买”按钮,弹出消息框显示购买的水果种类。
步骤如下:
1)首先是创建一个windows应用程序窗口,并布局。
这里是一个CheckedListBox复选列表框控件,一个Button按钮控件。
往“CheckedListBox复选列表框”控件中添加选项,需要在属性面板中找到Items属性。
点击右边的...按钮,往里面添加选项。
一个回车是一个元素,整体是一个数组集合。
整体效果
2)双击“确定”按钮,生成单击事件,并编写代码。
private void button1_Click_1(object sender, EventArgs e) { string msg = ""; for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) { msg = msg + " " + checkedListBox1.CheckedItems[i].ToString(); } if (msg != "") { MessageBox.Show("您购买的水果有:" + msg, "提示"); } else { MessageBox.Show("您没有选购水果!", "提示"); } }
分析:
首先是自定义一个字符串变量。
然后遍历复选列表框里被选中的内容。
最后添加两个提示框。用于输出和提示。
checkedListBox1.CheckedItems.Count
表示当前复选列表框的所有列表的长度。
checkedListBox1.CheckedItems[i].ToString()
表示当前复选列表框的所选列表,并以字符串的形式输出。
运行结果:
在使用复选列表框控件时需要注意获取列表中的项使用的是 Checkedltems 属性,获取当前选中的文本(上图中蓝色的区域)使用的是 Selectedltem 属性。
二、ListBox:列表框控件
列表框 (ListBox) 将所提供的内容以列表的形式显示出来,并可以选择其中的一项或多项内容,从形式上比使用复选框更好一些。
在列表框控件中有一些属性与前面介绍的控件不同,如下表所示。
属性名 | 作用 |
---|---|
MultiColumn | 获取或设置列表框是否支持多列,如果设置为 True,则表示支持多列;如果设置为 False,则表示不支持多列,默认为 False |
Items | 获取或设置列表框控件中的值 |
SelectedItems | 获取列表框中所有选中项的集合 |
SelectedItem | 获取列表框中当前选中的项 |
SelectedIndex | 获取列表框中当前选中项的索引,索引从 0 开始 |
SelectionMode | 获取或设置列表框中选择的模式,当值为 One 时,代表只能选中一项, 当值为 MultiSimple 时,代表能选择多项,当值为 None 时,代表不能选 择,当值为 MultiExtended 时,代表能选择多项,但要在按下 Shift 键后 再选择列表框中的项 |
列表框还提供了一些方法来操作列表框中的选项,由于列表框中的选项是一个集合形式的,列表项的操作都是用 Items 属性进行的。
例如 Items.Add 方法用于向列表框中添加项,Items.Insert 方法用于向列表框中的指定位置添加项,Items.Remove 方法用于移除列表框中的项。
1.例
使用列表框的形式完成上面复选框的添加。
根据题目要求,使用列表框列出所需的爱好,将窗体命名为 ListBoxForm,界面设计如下图所示。
注意:
这里是ListBox:列表框控件,不是CheckedListBox:复选列表框控件。
ListBox实现多选需要设置窗体的 SelectionMode 属性为 MultiSimple。
所以步骤如下:
1)首先是创建Windows应用程序,并布局。
这里就是一个ListBox列表框控件和一个Button按钮控件。
2)双击确定按钮,生成单击事件。
private void button1_Click_1(object sender, EventArgs e) { string msg = ""; for (int i = 0; i < listBox1.SelectedItems.Count; i++) { msg = msg + " " + listBox1.SelectedItems[i].ToString(); } if (msg != "") { MessageBox.Show("您选择的爱好是:" + msg, "提示"); } else { MessageBox.Show("您没有选择爱好", "提示"); } }
分析:
跟上一个一样,都是通过遍历将选择的列表添加到新定义的字符串中输出。
listBox1.SelectedItems.Count;
表示该列表的总个数。
SelectedItems | 获取列表框中所有选中项的集合 |
listBox1.SelectedItems[i].ToString()
表示将当前选中的集合,以字符串的形式输出。
运行结果:
因为本案例的SelectionMode属性是默认的One,所以只能选中一个。
如果把SelectionMode属性修改成MultiSimple,就可以多选了。
运行结果:
2.例
在 1例 的基础上添加两个按钮,一个负责向列表框中添加爱好,一个负责删除选中的列表项。
步骤如下:
1)总之布局结果是:
1个Label标签控件,1个TextBox表单控件,1个ListBox列表框控件。
3个Button按钮控件。
修改Text属性值。
2)分别双击3个按钮控件,生成3个单击事件。
注意这里的每个按钮的单击事件都要看好,否则弄混了就乱了。
//确定按钮private void button1_Click_1(object sender, EventArgs e) { string msg = ""; for (int i = 0; i < listBox1.SelectedItems.Count; i++) { msg = msg + " " + listBox1.SelectedItems[i].ToString(); } if (msg != "") { MessageBox.Show("您选择的爱好是:" + msg, "提示"); } else { MessageBox.Show("您没有选择爱好", "提示"); } }//添加按钮private void button2_Click_1(object sender, EventArgs e) { //当文本框中的值不为空时将其添加到列表框中 if (textBox1.Text != "") { listBox1.Items.Add(textBox1.Text); } else { MessageBox.Show("请添加爱好!"); } } //删除按钮private void button3_Click(object sender, EventArgs e) { //由于列表框控件中允许多选所以需要循环删除所有已选项 int count = listBox1.SelectedItems.Count; List<string> itemValues = new List<string>(); if (count != 0) { for (int i = 0; i < count; i++) { itemValues.Add(listBox1.SelectedItems[i].ToString()); } foreach (string item in itemValues) { listBox1.Items.Remove(item); } } else { MessageBox.Show("请选择需要删除的爱好!"); } }
分析:
因为没有修改Name属性值,所以通过默认值的方式,会容易弄混。
而这里只有三个,所以还算能勉强使用默认值。
而button1是确定按钮的单击事件。
内部分析,上面已经写了。
都是将所选的列表,通过消息框进行输出。
而button2是添加按钮的单击事件。
主要的是Add()方法。
通过判断输入框是否为空,从而执行不同的语句。
如果不为空,添加输入的内容。
listBox1.Items.Add(textBox1.Text);
listBox1属于列表框的Name属性名。
Items是列表框控件中的值。
Add方法,就是往里面添加值的方法。
textBox1.Text,则是表单里的文字。
如果为空,则输出提示。如:请添加爱好
而button3是删除按钮的单击事件。
主要的是Remove()方法。
首先是定义一个int类型,记录整个列表框内的个数。
然后是定义一个string字符串的泛型集合。
最后通过进行判断个数,来进行执行接下来的代码块。
第一个循环for,目的是将选中的元素赋值给前面定义的集合中。
然后在通过foreach,逐一删除选中的元素。
因为Remove()方法只能逐一删除,所以需要遍历删除。
在编写删除操作的功能时需要注意,首先要将列表框中的选中项存放到一个集合中, 然后再对该集合中的元素依次使用 Remove 方法移除。
运行结果:
当选中列表框中的值并单击“删除”按钮后,列表中的相应选项即可被删除。
三、ComboBox:组合框控件
在 C# WinForm开发中组合框(ComboBox)控件也称下拉列表框,用于选择所需的选项。
例如在注册学生信息时选择学历、专业等。
使用组合框可以有效地避免非法值的输入。
在组合框中也有一些经常使用的属性,如下表所示。
属性名 | 作用 |
---|---|
DropDownStyle | 获取或设置组合框的外观,如果值为 Simple,同时显示文本框和列表框,并且文本框可以编辑;如果值为 DropDown,则只显示文本框,通过鼠标或键盘的单击事件展开文本框,并且文本框可以编辑;如果值为 DropDownList,显示效果与 DropDown 值一样,但文本框不可编辑。默认情况下为 DropDown |
Items | 获取或设置组合框中的值 |
Text | 获取或设置组合框中显示的文本 |
MaxDropDownltems | 获取或设置组合框中最多显示的项数 |
Sorted | 指定是否对组合框列表中的项进行排序,如果值为 True,则排序, 如果值为 False,则不排序。默认情况下为 False |
在组合框中常用的事件是改变组合框中的值时发生的,即组合框中的选项改变事件 SelectedlndexChanged。
此外,在组合框中常用的方法与列表框类似,也是向组合框中添加项、从组合框中删除项。
1.例
实现一个选择专业的实例。
根据题目要求,创建一个名为 ComboBoxForm 的窗体,界面设计如下图所示。
步骤如下:
1)创建Windows应用程序,并布局。
2个Label标签控件,1个ComboBox组合框控件,1个TextBox表单组件,2个Button按钮控件。
2)在窗体的设计界面中为组合框填入 5 个专业,或者使用代码添加值,在本实例中使用代码向组合框中添加值;
通过“添加”或“删除”按钮将文本框中输入的值添加到组合框中或从组合框中删除。
如果手动,在Items属性中添加。
而这里是通过代码的方式:
comboBox1.Items.Add("计算机应用");
而整体代码如下:
//窗体载入事件private void Form1_Load(object sender, EventArgs e) { comboBox1.Items.Add("计算机应用"); comboBox1.Items.Add("英语"); comboBox1.Items.Add("会计"); comboBox1.Items.Add("软件工程"); comboBox1.Items.Add("网络工程"); }//组合框中选项改变的事件private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //当组合框中选择的值发生变化时弹出消息框显示当前组合框中选择的值 MessageBox.Show("您选择的专业是:" + comboBox1.Text, "提示"); }//“添加”按钮的单击事件,用于向组合框中添加文本框中的值private void button2_Click(object sender, EventArgs e) { //判断文本框中是否为空,不为空则将其添加到组合框中 if (textBox1.Text != "") { //判断文本框中的值是否与组合框中的的值重复 if (comboBox1.Items.Contains(textBox1.Text)) { MessageBox.Show("该专业已存在!"); } else { comboBox1.Items.Add(textBox1.Text); } } else { MessageBox.Show("请输入专业!", "提示"); } }//删除按钮的单击事件,用于删除文本框中输入的值private void button1_Click(object sender, EventArgs e) { //判断文本框是否为空 if (textBox1.Text != "") { //判断组合框中是否存在文本框中输入的值 if (comboBox1.Items.Contains(textBox1.Text)) { comboBox1.Items.Remove(textBox1.Text); } else { MessageBox.Show("您输入的专业不存在", "提示"); } } else { MessageBox.Show("请输入要删除的专业", "提示"); } }
分析:
总之就是先双击窗体,生成窗体的载入事件。
private void Form1_Load(object sender, EventArgs e)
然后是双击ComboBox组合框控件,这里的事件不是单击事件,而是选项改变后触发事件。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
之后是添加按钮的单击事件
private void button2_Click(object sender, EventArgs e)
删除按钮的单击事件。
private void button1_Click(object sender, EventArgs e)
第2~9行
是在载入事件内,通过.Add()方法实现了对ComboBox组合框内容的添加。
第12~16行
是ComboBox组合框控件的选项改变后,就触发消息框提示。
第18~37行,
是通过Add()方法实现添加功能。
首先通过输入框中是否为空,然后再通过判断列表框中的元素跟输入框中的内容是否重名。
comboBox1.Items.Contains(textBox1.Text)
如果重名,使用消息框提示。
如果没有重名,就通过Add()方法进行添加。
第39~58行
通过Remove()方法实现删除功能。
同样先判断输入框是否为空,然后再判断是否存在。
如果存在,就通过Remove()方法进行删除。
如果不存在,使用消息框进行提示。
运行结果: