c++ 遍历窗口控件_【自学C#】|| 笔记 31 控件,列表

本文介绍了C# WinForm中的三种控件:CheckedListBox,ListBox和ComboBox的使用。讲解了如何添加和操作控件中的项,以及如何获取用户的选择。通过示例代码展示了如何实现复选列表框的选购水果功能,列表框的多选设置,以及组合框的专业选择功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0d2ea578a782d818398351da215d9ac5.png

一、CheckedListBox:复选列表框控件

    复选列表框显示的效果与复选框类似,但在选择多个选项时操作比一般的复选框更方便。

    1.例

    使用复选列表框完成选购水果的操作。

    根据题目要求,创建一个名为 CheckedListBox 窗体,在复选列表框中添加 6 种水果, 单击“购买”按钮,弹出消息框显示购买的水果种类。

    步骤如下:

    1)首先是创建一个windows应用程序窗口,并布局。

    这里是一个CheckedListBox复选列表框控件,一个Button按钮控件。   

ff81ef7d833cdb48a92409e2bfcac3bc.png

        往“CheckedListBox复选列表框”控件中添加选项,需要在属性面板中找到Items属性。

2a5d41048275a197aad97570500d8cdb.png

        点击右边的...按钮,往里面添加选项。

bc9befaaef471978806b8b5e11769f79.png

        一个回车是一个元素,整体是一个数组集合。

    整体效果

f11f36f190444736ca93da3de3756bc6.png

    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()        

        表示当前复选列表框的所选列表,并以字符串的形式输出。

运行结果:

980720d1bebc1a34803804fb0b8cd58e.png

    在使用复选列表框控件时需要注意获取列表中的项使用的是 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,界面设计如下图所示。

ca4883039a4cc8d01bb1ceed3325597d.png

        注意:

            这里是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()

        表示将当前选中的集合,以字符串的形式输出。

运行结果:

b78ba249c65fa2ed4c5718b37f8f187b.png

8cf6f214541ab93be30a021e2cfc69b5.png

    因为本案例的SelectionMode属性是默认的One,所以只能选中一个。

    如果把SelectionMode属性修改成MultiSimple,就可以多选了。

d6def7c8c6168b5645ea8b3ea8068263.png

运行结果:   

cf6dddec758323d841a079922bcfa289.png

    2.例

    在 1例 的基础上添加两个按钮,一个负责向列表框中添加爱好,一个负责删除选中的列表项。

    步骤如下:

    1)总之布局结果是:

0dca5156ce3127e3c3426604d9ece961.png

    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 方法移除。

运行结果:

e0104cbb1d9f85b21683ceaf54569823.png

0f8c56c81977dfa50c83ad8c95c6b487.png

        当选中列表框中的值并单击“删除”按钮后,列表中的相应选项即可被删除。    

三、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按钮控件。

d6b8e5172bff38a5eb28e24bb1333b52.png

    2)在窗体的设计界面中为组合框填入 5 个专业,或者使用代码添加值,在本实例中使用代码向组合框中添加值;

    通过“添加”或“删除”按钮将文本框中输入的值添加到组合框中或从组合框中删除。

    如果手动,在Items属性中添加。

c7e6e6f3d2b089986ad302e1b347bb02.png

    而这里是通过代码的方式:

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()方法进行删除。

        如果不存在,使用消息框进行提示。

运行结果:

22ba5bad44a37d5cf1b34cd75eaa4722.png

de2638e99c89f88de476fe2f542c4ece.png

191c9366d35625ac5bc195e30968dc7f.png

0e9720b789746201ee93dd3d7e9a205a.png

dc4678807500848774967285fac30392.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值