c# 怎么获取autosize为true的控件高度_【自学C#】I 书 0102 复选框和复选列表框

e111e62c0592c6ad6449aa204317943f.png

一、简介

    CheckBox复选框控件和CheckedListBox复选列表框。

    当需要用户在多个选项中选择多个项时,可以使用复选框或复选列表框。

    复选按钮处于被选中状态时,其左边方块会出现勾号。

    复选框所组成的选项组可以进行多选,而单选则不能。

    复选列表框是一个选项组控件,能完成列表框可以完成的任务。

    在列表中的项旁边显示复选标记。

    可以理解成CheckBox和ListBox的组合体。

二、CheckBox和CheckedListBox的常用属性

    1.CheckState(状态)

    RadioButton拥有两种状态,用Checked属性来表示勾选和未勾选。

    CheckBox除了拥有Checked属性外,还可以通过CheckState属性表示3种状态。

        1)Checked

            处于勾选状态。

        2)Unchecked

            处于未勾选状态。

        3)Indeterminate

            处于不确定状态。

    注意:

        当把CheckState属性设置为Indeterminate时,Checked属性会自动变为true。

        当Checked属性值改变时,会导致CheckState属性自动变为Checked或Unchecked。

    2.CheckOnClick(单击时切换状态)

        是CheckedListBox复选列表框所独有的,其值为布尔值。

        指示复选列表框中是否应在首次单击某项时改变其状态。

        当值为false时,需要单击项2次才能改变其状态。

    3.SelectedIndex(选中项的索引号)

        是CheckedListBox复选框列表的属性,它只能通过代码方式访问。

        CheckedListBox控件可以包含多个项,每个项都有自己的索引号,从0开始计算。

        该属性是一个可读、可写的属性,当读取它时,返回当前选中的项。

        当给它赋值时,将使得指定项处于选中状态。

    4.SelectedItem(选中的项)

        是CheckedListBox控件的属性,它只能通过代码方式访问。

        它是一个只读属性,返回当前被选中的项。

    5.CheckedIndices(勾选项的索引集合)

        是CheckedListBox控件的属性,它只能通过代码方式访问。

        它是一个只读属性,返回所有勾选项的索引集合。

        可通过foreach语句访问所有被勾选的项。

            foreach (int i in checkedListBox.CheckedIndices)

    6.CheckedItems(勾选项的集合)

        是CheckedListBox控件的属性,它只能通过代码方式访问。

        它是一个只读属性,返回所有勾选项集合。

        可通过foreach语句访问所有被勾选的项。

            foreach (object o in checkedListBox.CheckedItems)

三、CheckBox和CheckedListBox的常用事件

    1.CheckedChanged事件

        Checked属性值更改。

        是CheckBox控件的事件,当CheckBox的Checked属性值发生改变时,将会触发这个事件,并调用事件的过程。

        它与RadioButton的CheckedChanged事件基本相同,只是由于勾选一个CheckBox时不好导致其他CheckBox状态改变,所以单击一个没有被勾选的CheckBox时,不会导致该事件被触发2次。

    2.CheckStateChanged事件

        CheckState属性值更改。

        是CheckBox控件的事件,与CheckedChanged事件基本一样,在Checked属性值被更改时两者都会被触发。

        唯一不同的是,当CheckBox处于勾选状态时,使用代码方式将CheckState的属性值设置成Indeterminate,不会触发CheckedChanged事件而会触发CheckStateChanged事件。

    3.ItemCheck事件

        Checked属性值更改。

        该属性是CheckedListBox控件事件,当CheckedListBox中某个项的Checked属性发生改变时,将会触发该事件。

        这里需要注意,先触发事件才会改变Checked属性。

    4.SelectedIndexChanged事件

        Checked属性值更改

        该属性是CheckedListBox控件事件,当CheckedListBox中某个项的Checked属性发生改变时,将会触发该事件。

        跟ItemCheck事件不同,它将在Checked属性改变后才触发该事件。

        而且事件一般用于鼠标勾选项时的情况。

        如果使用代码更改Checked属性,将不会触发该事件。

四、CheckedListBox复选列表框的常用方法。

    是一个带有集合性质的控件,它可以包含多个项。

    为了方便管理,所有的项都被存放于Items属性内。

    可以通过Items属性里的一些方法和属性来管理CheckedListBox里的每一项。

    1.CheckedListBox.Items.Add方法

        有时需要根据实际情况动态地在CheckedListBox中添加项。

        Items.Add方法可以实现这样的功能。

        比如添加一个名称为“北京”的项。

           checkedListBox.Items.Add("北京");

    2.CheckedListBox.SetItemChecked方法

        如果需要用代码指定某项是否处于勾选状态,可以使用次方法。

        方法原型是:

            public void SetItemChecked(int index, bool value)

        第一个参数:是一个整数,指定项的索引号。

        第二个参数:是一个bool值,判断是否被选中。

                    如果被选中,为true。未被选中,为false。

        如果将索引号2的项设置成未勾选选中的状态:

            checkedListBox.SetItemChecked(2, false);

    3.CheckedListBox.SetItemCheckState方法

        复选列表框中的每个项是一个CheckBox,所以也具有CheckState属性。

        可以通过SetItemCheckState方法来设置项的CheckState属性。

        SetItemCheckState方法的原型是:

            checkedListBox.SetItemCheckState(0, CheckState.Indeterminate);

五、实例演示

    1.CheckBox和CheckedListBox的使用。

        1)首先创建一个windows应用程序

        2)修改窗体属性,Name:FormFavor;Text:请选则您关注的编程语言。

        3)在窗体上放置1个Label控件,修改属性。

            Name:lblSelCount;

            Text:您已选择了0项;

            AutoSize:false;(自动大小,false时,手动调节大小)

            TextAligh:MiddleLeft;(左对齐)

        4)放置1个CheckedListBox复选列表框控件。

            Name:chkIsFavor;

            CheckOnClick:true;(单击时切换状态)

            Items属性:找到并单击右侧的小按钮,往里添加内容。

        5)放置1个Button按钮控件。

            Name:btnPost;

            Text:提交;

        6)放置1个TextBox输入框控件。

            Name:txtResult;

            Multiline:true;(手动调整大小)

        7)放置3个CheckBox复选框控件。

            Name分别为:chkBlod、chkItalic、chkUnderline;

            Text分别为:粗体、斜体、下划线;

ee49151116b9d9aeb3c9fe3cb40decc2.png

        8)给chkFavor复选列表框控件生成SelectedIndexChanged事件。

        9)给btnPost按钮控件,生成Click事件。

        10)同时选择3个CheckBox复选框控件,共同生成CheckedChanged事件。

        11)代码如下

7efc1a2aefd9a9b6202d7b56083a1015.png

运行结果

25f8fd3ad97041b2f248613b342d5995.png

分析:

    并没有涉及太多上述的概念。当然概念确实很乏味,但也得知道啊!

20~25行

    通过CheckOnClick属性来获取被选中的状态。

    然后chkIsFavor.CheckedIndices.Count则表示选中被勾选的个数。

    这里之所以没有选择ItemCheck事件,是因为该事件发生后Checked属性才改变,所以会导致统计数目出错。

    lblSelCount.Text重新修改lblSelCount控件的属性值。

27~35行

    点击按钮控件,执行Click事件代码里的应用。

    也就是把复选列表框中选中的项,显示在txtResult输入框内。

    chkIsFavor.CheckedItems获取复选列表框中被选中的集合。

    然后通过foreach进行遍历输出。

    最后的s.TrimEnd('、') ,是将最后的“、”顿号删除。

    需要注意的是,这里使用的是单引号,不是双引号。

37~47行

    FontStyle是一个位标志,使用“或”运算符进行或运算。

    使用“&~”运算符减去FontStyle,是加入一种特效?

    先进行~(求补)运算,然后再进行&(与)运算。

    涉及位运算、运算符优先级、三目运算符。

    总之就是改变字体样式,如果选中就是或运算,附加字体样式;如果没有选中就是与运算,求补,也就是不加样式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值