我有这段代码可以在 PictureBox 中绘制图表:
private void ChkLiboData_ItemCheck(object sender, ItemCheckEventArgs e)
{
Refresh();
try
{
foreach (DataClass d in ChkLiboData.CheckedItems)
{
if (d.r == null && d.g == null && d.b == null)
{
Random r = new Random();
d.r = r.Next(0, 255);
d.g = r.Next(0, 255);
d.b = r.Next(0, 255);
DrawDiagram(d.DataList, (int)d.r, (int)d.g, (int)d.b);
}
else
{
DrawDiagram(d.DataList, (int)d.r, (int)d.g, (int)d.b);
}
Refresh();
}
}
catch { }
}
但是在 Debug模式中,当我检查一个项目并查看 ChkLiboData.CheckedItems
时,我在 ChkLiboData.CheckedItems
中看不到任何项目。
我该怎么办???
最佳答案
ItemCheck
事件在项目的选中状态即将更改 时引发。它还没有改变。让我用一个例子来证明这一点。 CheckedListBox 包含 3 个项目“A”、“B”和“C”。没有检查项目。现在用户检查项目“A”。触发事件 ItemCheck
。属性 CheckedItems
不包含任何项目。在事件参数 e
(ItemCheckEventArgs
类型)中,您可以找到检查状态正在更改的项目的索引,属性 CurrentValue
包含之前检查的状态和包含新检查状态的属性 NewValue
。如果用户随后检查项目“B”,则再次触发该事件。这次属性 CheckedItems
包含一项“A”。 a.s.o.
顺便说一句:您可以在 ItemCheck 事件中设置属性 NewValue
。这为您提供了可能性,例如以防止检查项目。
关于c# - 选中列表框的选中项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8554720/