我使用多行和全行选择ListView控件。当我一次选择多行时,我的一些行奇迹般地被检查。拖动鼠标时也会发生这种情况,也会在选择另一个时移动。C#列表查看与复选框,多选行时检查自动复选框
见图片描述的问题在这里:
在柚子到底是怎么回事?任何人?
我使用多行和全行选择ListView控件。当我一次选择多行时,我的一些行奇迹般地被检查。拖动鼠标时也会发生这种情况,也会在选择另一个时移动。C#列表查看与复选框,多选行时检查自动复选框
见图片描述的问题在这里:
在柚子到底是怎么回事?任何人?
不幸的是在ListView类的错误,这是其中之一。以下代码是适用于我的修复程序。
编辑:对不起,这不正常,虽然它可以防止您在问题中显示的错误。这可以防止选择多个项目,然后通过单击复选框来检查它们。
void SetupListView()
{
listView.ItemCheck += new ItemCheckEventHandler(listView_ItemCheck);
listView.MouseDown += new MouseEventHandler(listView_MouseDown);
listView.MouseUp += new MouseEventHandler(listView_MouseUp);
listView.MouseLeave += new EventHandler(listView_MouseLeave);
}
bool mouseDown = false;
void listView_MouseLeave(object sender, EventArgs e)
{
mouseDown = false;
}
void listView_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
void listView_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
void listView_ItemCheck(object sender, ItemCheckEventArgs e)
{
if(mouseDown)
{
e.NewValue = e.CurrentValue;
}
}
若要通过直接点击复选框来切换多个项目,我只需将'mouseDown = true;'更改为'mouseDown = e.X> 20;'。这适用于我,因为复选框位于ListView窗口的左侧。 – timfoden 2018-01-16 09:00:38
我在另一个论坛回答了这个:
http://www.codeproject.com/Messages/3417741/Re-how-to-disable-multi-select-of-checkbox-in-list.aspx
HTH - hground
嗨,欢迎来到SO。当你的回答只是其他地方的链接时,可以考虑在链接中发表评论。对于答案,如果您至少提供了有关该链接的简短信息,它将有所帮助。不过,一个很好的答案! – DWright 2012-12-26 18:44:19
它了简单的问题 只是试试这个
private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (ModifierKeys == Keys.Control || ModifierKeys == Keys.Shift)
{
e.NewValue = e.CurrentValue;
}
}
大问题!很清楚地描述了这个问题。 – 2015-05-16 12:14:49