我有一个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]);
}
答案 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]);
}
}