百思不得骑姐的问题——难道是控件的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);

                }

            }

        }


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

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

 

答案找到了:

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

你可能感兴趣的:(bug)