C# 选择空行,然后从listview中取消选择项目
在表单加载时,我选择了C# 选择空行,然后从listview中取消选择项目,c#,.net,winforms,C#,.net,Winforms,在表单加载时,我选择了列表视图中的第一行。但当我选择空行时,它会从列表视图中取消选择项目 单击空白行然后选择以前选择的行时,我应该做什么?我在谷歌上搜索过,但没有找到任何好的答案。关于stackoverflow的答案仅适用于WPF,不适用于windows窗体 在类中保存上一个索引 如果当前索引指向空字符串,请使用(1)将选择更改回上一个选择 然后调用myListView.Select() 代码: int selectedRowIndex = 0; private void listVie
列表视图中的第一行。但当我选择空行时,它会从列表视图中取消选择项目
单击空白行然后选择以前选择的行时,我应该做什么?我在谷歌上搜索过,但没有找到任何好的答案。关于stackoverflow的答案仅适用于WPF,不适用于windows窗体
在类中保存上一个索引
如果当前索引指向空字符串,请使用(1)将选择更改回上一个选择
然后调用myListView.Select()
李>
代码:
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
的MouseUp
事件添加事件处理程序来实现。如果仍然需要SelectedIndexChanged
及其委托方法listViewUserList\u SelectedIndexChanged
的事件处理程序,请从中删除任何处理项目选择的代码:
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();
}
}
添加以下事件处理程序:
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);
在Winforms中,我已经明确提到了…@RahulPage.Ispostback
在Winforms中没有太多作用:)我不太清楚你在这里问什么。你能重新表述一下你的问题吗?@Alex我的项目是.NET/WinForms。我有一个列表视图,它总是充满了项目。我希望它总是有选择。但是,如果我单击列表视图项目下方的空白区域,则会失去选择。但是,如果我单击列表视图项目下方的空白区域,它失去了选择。我希望listview SelectedIndexChanged我必须获取Column数据Alex你可以在SelectedIndexChanged事件中执行什么操作?对SelectedIndexChanged
的单个调用范围内没有足够的信息来做出正确的选择。更重要的是,如果在该方法中更改了选择,则必须确保不会递归触发其他SelectedIndexChanged
事件(基本上,这意味着您必须在方法开始时从事件中注销事件处理程序,并在结束时重新注册)。
private void listViewUserList_MouseUp(object sender, MouseEventArgs e)
{
if (listViewUserList.SelectedItems.Count > 0)
{
selectedRowIndex = listViewUserList.SelectedItems[0].Index;
}
else
{
listViewUserList.Items[selectedRowIndex].Selected = true;
}
}