已检查列表框的已检查项目不起作用

时间:2011-12-18 20:52:44

标签: c# .net winforms c#-4.0

我有这个代码用于在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中的任何项目。 我该怎么做???

1 个答案:

答案 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。这样就有可能防止检查项目。