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


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

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

    答案找到了:

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

  • 相关阅读:
    HDU 4512 吉哥系列故事——完美队形I (LCIS)
    HDU 4506 小明系列故事——师兄帮帮忙
    SDUT Greatest Number
    HDU 4545 魔法串
    HDU 4546 比赛难度 (优先队列 * * )
    Android布局学习
    K9mail编译
    没有小的项目
    dxDBTreeView自动删除数据问题
    SQL Server查看表空间占用情况
  • 原文地址:https://www.cnblogs.com/yangleiWPF/p/3956768.html
Copyright © 2011-2022 走看看