我正在使用带有多行和全行选择的 ListView 控件。当我一次选择多行时,我的一些行会神奇地被选中。当将鼠标拖动到上方以及选择一个并按住 Shift 键单击另一个时,会发生这种情况。

请参阅此处描述问题的图片: alt text

柚子里到底发生了什么?任何人?

有帮助吗?

解决方案

不幸的是在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;
    }
}

其他提示

它了简单的问题 只是尝试这

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (ModifierKeys == Keys.Control || ModifierKeys == Keys.Shift)
    {
        e.NewValue = e.CurrentValue;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top