如果从列表视图中取消选择项目,则选择空白行
本文关键字:选择 项目 空白 取消 列表 视图 如果 | 更新日期: 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
中取消选择项目。
我应该怎么做,当点击空白行,然后选择以前选择的行?我在谷歌上搜索过,但没有找到任何好的答案。
这可以通过为ListView
的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);
和以下方法:
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) 将选择更改回先前的选择
- 则呼叫
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();
}
}