zoukankan      html  css  js  c++  java
  • 百思不得骑姐的问题——难道是控件的bug?

    直接进入主题,困惑了一下午了。

    要实现的功能:

    winform的checkedlistbox控件

    点击  “全部”  就都选上,可是如果点击过快就会出现如上现象,下面选项未显示选中。

    代码如下:

     private void clbSaleDept_SelectedIndexChanged(object sender, EventArgs e)
            {
                CheckedListBox cb = sender as CheckedListBox;
    
                if (cb == null || cb.SelectedIndex < 0)
                {
                    return;
                }
                //如果单击“全选”
                if (cb.SelectedIndex == 0)
                {
                    for (int i = 1; i < cb.Items.Count; i++)
                    {
                        Console.WriteLine(cb.GetItemChecked(0));
                        cb.SetItemChecked(i, cb.GetItemChecked(0));
                    }
                }
                else
                {
                    if (!cb.GetItemChecked(cb.SelectedIndex))
                    {//当其它选项有一项未选中,则取消“全选”
                        cb.SetItemChecked(0, false);
                    }
                    else if (!cb.GetItemChecked(0) && cb.SelectedItems.Count >= (cb.Items.Count - 1))
                    {//当其它所有选中,则选中“全选”
                        cb.SetItemChecked(0, true);
                    }
                }
            }


    个人在代码里面看不出什么问题。

    经过写日志得出:在快速点击“全选”按钮时,并不是每次都进入该事件。

    答案找到了:

    如果点击过快窗体会认为是双击事件,所以在双击事件里面再调用一次单击事件。

  • 相关阅读:
    MongoDB一键安装
    Mongo基本操作
    MongoDB AUTH结果验证及开启方法
    MongoDB AUTH结果验证
    MongoDB使用
    MongoDB-安装配置
    11204RAC-dbca建库脚本
    MySQL主从同步最佳实践
    实时抓取主从的同步状态
    守护神 Supervisor
  • 原文地址:https://www.cnblogs.com/yangleiWPF/p/3956768.html
Copyright © 2011-2022 走看看