ListViews为未选中的每个项目和所选的每个项目调用一次SelectedIndexChanged。我需要在这些条件下调用函数:
(换句话说,在仍以某种方式处理每个所选项目时,呼叫量最少)
bool holdMouse = false;
bool clicked = false;
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (MouseButtons == MouseButtons.Left)
{
holdMouse = true;
}
else if(clicked)
{
clicked = false;
func();
}
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
if (holdMouse)
{
holdMouse = false;
func();
}
}
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
clicked = true;
}
private void func() { }
" holdMouse"用于阻止用户拖动选择时发生任何事情。和"点击"用于确保在取消选择多个内容时仅调用该函数一次。如果没有,则为每个取消选择的项目调用它。
我也尝试过这里的最佳答案: Catching Unselecting All in ListView -- SelectedIndexChanged Firing Twice 但是,只有在选择项目时才调用该函数,而不是在取消选择项目时调用该函数。我仍然遇到一个问题,我需要在之后调用我的函数>>取消选择所有内容。
答案 0 :(得分:0)
好的,这非常令人尴尬。我只是让它变得太复杂了。这非常有效。
Boolean selChanged = false;
private void func()
{
if (selChanged)
{
selChanged = false;
//do stuff here
}
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
func();
}
private void listView1_KeyUp(object sender, KeyEventArgs e)
{
func();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
selChanged = true;
}