如何仅用鼠标左键选择 ListViewItem? [英] How to select ListViewItem with left mouse button only?
问题描述
如何防止右键单击在单击和双击时选择我的列表视图中的项目?
How can i prevent the right click from selecting an item in my listview both in click and double click?
推荐答案
你可以使用这段代码,我认为它应该可以完成工作.您需要设置一些 bool
变量以指示在您的 MouseDown
中单击了鼠标右键,然后 Clear
选择的项目,如果 SelectedIndexChanged 事件处理程序由于右键单击而触发,然后在 MouseUp
事件上重置指示器.检查代码:
You could use this code, I think it should do the work. You need to set some bool
variable to indicate that the right mouse has been clicked in your MouseDown
, then Clear
selected items, if SelectedIndexChanged event handler fired because of the right click and then reset the indicator on MouseUp
event. Check the code:
bool rightClicked = false;
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
rightClicked = true;
}
else
{
rightClicked = false;
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (rightClicked)
{
listView1.SelectedItems.Clear();
}
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
rightClicked = false;
}
这是我能做的最好的,它保留了选择但闪烁.该解决方案可以使用项目的一些自定义绘图来实现,但这需要太多时间.我把它留给你.
This is the best I could do, it preserves the selection but flickers. the solution could be implemented using some custom drawing of the items but that requires too much time. I leave that to you.
bool rightClicked = false;
int [] lviListIndex = null;
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
rightClicked = true;
lviListIndex = new int[listView1.SelectedItems.Count];
listView1.SelectedIndices.CopyTo(lviListIndex, 0);
}
else
{
rightClicked = false;
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (rightClicked)
{
listView1.SelectedIndices.Clear();
}
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
if (rightClicked)
{
listView1.SelectedIndexChanged -= new System.EventHandler(listView1_SelectedIndexChanged);
if (lviListIndex != null)
{
foreach (int index in lviListIndex)
{
listView1.SelectedIndices.Add(index);
}
}
lviListIndex = null;
listView1.SelectedIndexChanged += new System.EventHandler(listView1_SelectedIndexChanged);
}
rightClicked = false;
}
这篇关于如何仅用鼠标左键选择 ListViewItem?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!