选中复选框列表选中的项目

时间:2012-12-23 09:08:53

标签: c# checkboxlist

我已经尝试过寻找解决问题的方法,但未找到一个,因为似乎每个人都比我的问题提前一两步。

我正在尝试从复选框列表中选择一个项目,而不是从中选择一个项目。

我知道要做的是在单击按钮并选中选中的选项后,使得结果事件触发,以便在已检查项目的标签中显示文本。

该程序基于装饰器模式,允许用户从一组3/4可检查选项中进行选择,当按下按钮时,将显示与基座末端标签中的那些项目相关的文本文本。目前,我所管理的只是让它在所选项目上一次一个,这与第一个例子类似。

例如,当选中名为Monitor的选项时,它将显示在标签中:

你正在买一台电脑和一台显示器。

如果有多个选中的项目,如监视器和键盘,那么它会说:

你得到一台电脑,一台显示器和一把键盘。

1 个答案:

答案 0 :(得分:0)

根据新检查的项目值触发Label.Text Label事件时,您可以更改目标ItemCheck的{​​{1}}属性。

示例

假设您有CheckedListBox名称Labellabel1名称CheckedListBoxcheckedListBox1名称Form,以下可能适用

Form1

示例输入

public class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        label1.Text = "You are getting "; //Change the Text property of label1 to "You are getting "
        checkedListBox1.ItemCheck += new ItemCheckEventHandler(checkedListBox1_ItemCheck); //Link the ItemCheck event of checkedListBox1 to checkedListBox1_ItemCheck; not required as long as you link the event through the designer
    }
    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (e.NewValue == CheckState.Checked && e.CurrentValue == CheckState.Unchecked) //Continue if the new CheckState value of the item is changing to Checked
        {
            label1.Text += "a " + checkedListBox1.Items[e.Index].ToString() + ", "; //Append ("a " + the item's value + ", ") to the label1 Text property
        }
        else if (e.NewValue == CheckState.Unchecked && e.CurrentValue == CheckState.Checked) //Continue if the new CheckState value of the item is changing to Unchecked
        {
            label1.Text = label1.Text.Replace("a " + checkedListBox1.Items[e.Index].ToString() + ", ", ""); //Replace ("a " + the item's value + ", ") with an empty string and assign this value to the label1 Text property
        }
    }
}

样本输出

[x] Monitor
[x] Keyboard
[ ] Mouse
[x] Computer

谢谢, 我希望你觉得这很有帮助:)