c# - 选中列表框的选中项不起作用

标签 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 { }
    }

但是在 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/

相关文章:

c# - 我如何将网络订单中的两个字节组合成一个通常的短消息?

javascript - 仅显示 javascript 对象的对象属性

c# - 尝试使用 C# SpellCheck 类

c# - global.asax 中的 Application_Error 未捕获 WebAPI 中的错误

c# - 根据网格宽度调整 DataGridView 列的大小

c# - Windows 窗体 : using BackgroundImage slows down drawing of the Form's controls

c# - 富文本框中的图标?

c# - 服务 Controller 权限

.net - 为什么 .NET Core (dnxcore50) xUnit 测试在 VS2015 测试资源管理器中不可见?

c# - Xamarin.forms webview 和在 HTML5 视频标签和 android 问题中查看/播放视频