C# 从CheckedListBox中的项目中单击会对上次单击的项目产生影响
我有一个带有3项的C# 从CheckedListBox中的项目中单击会对上次单击的项目产生影响,c#,winforms,C#,Winforms,我有一个带有3项的检查列表框。我单击第一个并选中它,然后单击项目,但我看到单击对项目有影响 有一段录像 如何解决这个问题?我只想在我点击项目时得到点击,而不想在我不点击的情况下得到点击 编辑(特别适用于@Kieran Devlin) for (int i = 0; i < 3; ++i) { string str = "Item " + i; checkedListBox1.It
检查列表框
。我单击第一个并选中它,然后单击项目,但我看到单击对项目有影响
有一段录像
如何解决这个问题?我只想在我点击项目时得到点击,而不想在我不点击的情况下得到点击
编辑(特别适用于@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实现了这样一种方式,即单击可以更改复选框状态,双击也可以。。。据我所知,为了解决这个问题,应该提供一些自定义实现。。。奇怪。。。