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


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

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

    答案找到了:

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

  • 相关阅读:
    天翼网关获取超级密码
    Wirte-up:攻防世界Web解题过程新手区01-06
    F#周报2019年第12期
    F#周报2019年第11期
    F#周报2019年第10期
    F#周报2019年第9期
    F#周报2019年第8期
    F#周报2019年第7期
    ML.NET 0.10特性简介
    F#周报2019年第6期
  • 原文地址:https://www.cnblogs.com/yangleiWPF/p/3956768.html
Copyright © 2011-2022 走看看