选择空白行,从列表视图中取消选择项目

时间:2013-05-14 06:37:07

标签: c# .net winforms

int selectedRowIndex = 0;    
private void listViewUserList_SelectedIndexChanged(object sender, EventArgs e)
{
    if(listViewUserList.SelectedIndices.Count == 0)
       return;
}
private void Form_Load(object sender, EventArgs e)
{
    if(listViewUserList.Items.Count > 0)
    {
        listViewUserList.Items[selectedRowIndex].Selected = true;
        listViewUserList.Select();
    }
}

在表单加载中,我在ListView中选择第一行。但是当我选择空行时,它会取消选择ListView中的项目。

点击空行然后选择之前选择的行,我该怎么办?我在Google上搜索过但没有找到任何好的答案。仅针对WPF而不是针对Windows窗体的stackoverflow的答案。

2 个答案:

答案 0 :(得分:0)

  1. 将以前的索引保存在班级中。
  2. 如果当前索引指向空字符串,请使用(1)
  3. 将选择更改回上一个选择
  4. 然后致电myListView.Select();
  5. <强>代码:

     private void Form_Load(object sender, EventArgs e)
     {
         if(listViewUserList.Items.Count > 0 && (String.Empty != listViewUserList.Items[selectedRowIndex].ToString() ))
         {
             listViewUserList.Items[selectedRowIndex].Selected = true;
             listViewUserList.Select();
         }
     }
    

答案 1 :(得分:0)

这可以通过为ListView的{​​{1}}事件添加事件处理程序来完成。如果您仍需要MouseUp的事件处理程序及其委托方法SelectedIndexChanged,请从中删除处理项目选择的任何代码:

listViewUserList_SelectedIndexChanged

添加以下事件处理程序:

private void listViewUserList_SelectedIndexChanged(object sender, EventArgs e)
{
    // remove the 2 lines below, as the selection handling is done in the
    // MouseUp event handler

    //if(listViewUserList.SelectedIndices.Count == 0)
    //   return;

    // TODO: get the column data
}

和以下方法:

listViewUserList.MouseUp += new MouseEventHandler(this.listViewUserList_MouseUp);