我有这个代码用于在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 { }
}
但在调试模式中,当我检查一个项目并且我查看ChkLiboData.CheckedItems
时,我看不到ChkLiboData.CheckedItems
中的任何项目。
我该怎么做???
答案 0 :(得分:4)
当项目的选中状态即将更改时,会引发事件ItemCheck
。它已经没有改变。让我用一个例子来说明。 CheckedListBox包含3个项目" A"," B"和" C"。没有选中任何项目。现在用户检查项目" A"。事件ItemCheck
被触发。属性CheckedItems
不包含任何项目。在事件args e
(类型为ItemCheckEventArgs
)中,您可以找到检查状态正在更改的项的索引,包含之前已检查状态的属性CurrentValue
以及属性{{1包含新的已检查状态。如果用户然后检查项目" B",则再次触发该事件。这次属性NewValue
包含一个项目" A"。 a.s.o。
BTW:您可以在ItemCheck事件中设置属性CheckedItems
。这样就有可能防止检查项目。