我想在C#中的ListBox中显示CheckedListBox中的任何选定项

时间:2014-11-04 14:52:02

标签: c# .net winforms listbox

我有一个Windows窗体应用程序,其中包含一个名为“ChkBox1”的“CheckedListBox”,它包含这些项目(蓝色,红色,绿色,黄色)。

表单还包含一个名为“LstBox1”的空“ListBox”。

我希望当我检查“ChkBox1”中的任何项目时,它会添加到“LstBox1”,当我从“ChkBox1”取消选中它时,它会从“LstBox1”中删除。

我想我应该使用“ItemChecked”事件,但我不知道如何检测项目是否已检查并将其添加到另一个列表中。

这是我的尝试:

        private void ChkBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (ChkBox1.CheckedItems.Count > 0)
            listBox1.Items.Add(ChkBox1.Items[e.Index]);
        else if (ChkBox1.CheckedItems.Count == 0)
            listBox1.Items.Remove(ChkBox1.Items[e.Index]);
    }

但是当我取消选中时它会添加该项目,而不是在我检查时。

这是另一次尝试:

        private void ChkBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {

        if (ChkBox1.GetItemChecked(e.Index) == true)
            listBox1.Items.Add(ChkBox1.Items[e.Index]);
        else if (ChkBox1.GetItemChecked(e.Index) == false)
            listBox1.Items.Remove(ChkBox1.Items[e.Index]);
    }

2 个答案:

答案 0 :(得分:0)

" ItemChecked"会发给你一个" ItemCheckEventArgs"包含旧值和新值。 它还包含已更改的值的索引。 您还可以查看" CheckedItems"获得每件物品的财产:

    private void ChkBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        LstBox1.Items.Clear();
        foreach (var item in ChkBox1.CheckedItems)
            LstBox1.Items.Add(item);
    }

答案 1 :(得分:0)

试试这个:

private void ChkBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.NewValue == CheckState .Checked)
    {
        listBox1.Items.Add(ChkBox1.Items[e.Index]);
    }
    else
    {
        listBox1.Items.Remove(ChkBox1.Items[e.Index]);    
    }
}