[英]C# Set ListView item selected after inserting a new Item in winform
我有以下代碼,用於克隆/復制選定的ListView項目,刪除選定的項目,然后將復制的Item重新插入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。 因此,您看不到任何選定的項目。 如果在窗體上按TAB鍵直到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;
}
}
您可能想嘗試使用IndexOf方法獲取插入項的索引。
listView.Items[listView.Items.IndexOf(oListViewItem)].Selected = true;
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.