C# 从CheckedListBox中的项目中单击会对上次单击的项目产生影响

C# 从CheckedListBox中的项目中单击会对上次单击的项目产生影响,c#,winforms,C#,Winforms,我有一个带有3项的检查列表框。我单击第一个并选中它,然后单击项目,但我看到单击对项目有影响 有一段录像 如何解决这个问题?我只想在我点击项目时得到点击,而不想在我不点击的情况下得到点击 编辑(特别适用于@Kieran Devlin) for (int i = 0; i < 3; ++i) { string str = "Item " + i; checkedListBox1.It

我有一个带有3项的
检查列表框
。我单击第一个并选中它,然后单击项目,但我看到单击对项目有影响

有一段录像

如何解决这个问题?我只想在我点击项目时得到点击,而不想在我不点击的情况下得到点击

编辑(特别适用于@Kieran Devlin)

 for (int i = 0; i < 3; ++i)
            {
                string str = "Item " + i;
                checkedListBox1.Items.Add(str);
            }
for(int i=0;i<3;++i)
{
string str=“Item”+i;
checkedListBox1.Items.Add(str);
}

p.S没有什么可补充的,这是一个非常明显的问题,我不明白我如何能制作出最小可重复的示例。很简单,我有一个包含3个项目的复选框(如上),然后单击项目复选框,他的状态发生变化,然后单击项目外,他的状态再次发生变化(这是一个问题)。用户不希望他单击项目外,这会以某种方式对项目产生影响。我不明白在这里复制什么,抱歉…

我想你必须拦截鼠标:

public class CheckedListBoxEx : CheckedListBox
{
  private const int WM_LBUTTONDOWN = 0x201;

  protected override void WndProc(ref Message m)
  {
    if (m.Msg == WM_LBUTTONDOWN)
    {
      Point pt = new Point(m.LParam.ToInt32());
      if (this.IndexFromPoint(pt) == -1)
      {
        return;
      }
    }
    base.WndProc(ref m);
  }
}

请您提供一个最小的可复制示例。@KieranDevlin特别为您:)编辑了我的问题
checkedListBox1.CheckOnClick=true@LarsTech点击检查不是我要找的。选中单击仅设置如果需要单击两次以选中项目或单击一次。这和我的问题不一样result@AlekseyTimoshchenko您的意思是,单击CheckListBox控件内的空白区域仍在更改所选项目的选中状态?使用此代码不应该是可能的。你确实用这个版本替换了CheckedListBox控件吗?这是我录制的视频@AlekseyTimoshchenko我猜你点击的次数足以导致双击。试着点击一下看看它是否成功。是的,你是对的。无论如何,奇怪的是,checkListBox实现了这样一种方式,即单击可以更改复选框状态,双击也可以。。。据我所知,为了解决这个问题,应该提供一些自定义实现。。。奇怪。。。