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

本文关键字:选择 项目 空白 取消 列表 视图 如果 | 更新日期: 2023-09-27 18:13:19

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中取消选择项目。

我应该怎么做,当点击空白行,然后选择以前选择的行?我在谷歌上搜索过,但没有找到任何好的答案。

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

这可以通过为ListViewMouseUp事件添加事件处理程序来完成。如果你仍然需要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);

和以下方法:

private void listViewUserList_MouseUp(object sender, MouseEventArgs e)
{
    if (listViewUserList.SelectedItems.Count > 0)
    {
        selectedRowIndex = listViewUserList.SelectedItems[0].Index;
    }
    else
    {
        listViewUserList.Items[selectedRowIndex].Selected = true;
    }
}
  1. 将以前的索引保存在类中
  2. 如果当前索引指向空字符串,使用(1)
  3. 将选择更改回先前的选择
  4. 则呼叫myListView.Select();

代码:

 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();
     }
 }