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);
                    }
                }
            }


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

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

    答案找到了:

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

  • 相关阅读:
    RWIGS and LORBIT (1)
    时间档案:飞秒、皮秒、纳秒、微秒、毫秒、秒 (转自新浪)
    Linux Shell 文本处理工具集锦(转载)
    awk——getline
    PERL 正则表达式简介
    算法的性能
    排序算法与稳定性的理解
    实现双端队列
    实现栈
    实现队列
  • 原文地址:https://www.cnblogs.com/yangleiWPF/p/3956768.html
Copyright © 2011-2022 走看看