我拥有以下代码,这些代码/使所选列表视图项目复制,删除所选项目,然后将复制的项目重新插入ListView中的新位置。<<<<<<<<<<<<<<
private void btnUp_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 1)
{
int iIndex = listView1.FocusedItem.Index;
if (iIndex > 0)
{
ListViewItem oListViewItem = (ListViewItem)listView1.FocusedItem.Clone();
listView1.Items.Remove(listView1.FocusedItem);
listView1.Items.Insert(iIndex - 1, oListViewItem);
}
}
}
该代码正常工作,并且该项目已移动并更新了列表。但是,我想要新插入的项目以保持选择。我尝试了
listView1.items [iindex -1] .selected = true;
但这没有所需的影响。
我还能尝试什么?
如果将Selected = true
添加到新插入的项目索引中,则您的代码应按预期工作。但是,当您单击按钮时,焦点将转移到按下按钮,在默认属性下,listView.HIDESELECTION设置为true。因此,您看不到任何项目。如果您按表格上的选项卡,直到ListView再次为"聚焦控件",则应显示您的ListViewItem。
如果您想显示某种形式的(昏暗)选择,即使没有聚焦,则设置
listView1.HideSelection = false;
但是,如果我了解您要做的事情(移动项目),那么您应该更改代码以使用selectedItems [0]元素而不是focusedItem
if (listView1.SelectedItems.Count == 1)
{
int iIndex = listView1.SelectedItems[0].Index;
if (iIndex > 0)
{
ListViewItem oListViewItem = (ListViewItem)listView1.SelectedItems[0].Clone();
listView1.SelectedItems[0].Remove();
listView1.Items.Insert(iIndex -1, oListViewItem);
listView1.Items[iIndex -1].Selected = true;
}
}
您可能需要尝试使用索引方法获取插入项目的索引。
listView.Items[listView.Items.IndexOf(oListViewItem)].Selected = true;
希望这会有所帮助。