[英]Get position of Focused item in ListView
在ListView中,我想獲取焦點項目的int位置ID。 表示最后選擇的項目。
例如:如果我單擊項目10,ID應該變成10,但是如果我按住CTRL並單擊項目20(那么10和20都會被選中),那么我希望ID變成20。
這是我一直在嘗試的方法,但是當我選擇多個項目時卻出現錯誤:
private void listSub_SelectedIndexChanged(object sender, EventArgs e)
if (listSub.SelectedItems.Count != 0)
{
MessageBox.Show(Convert.ToString(listSub.FocusedItem.Index + 1));
}
}
如果您想要索引,則可以通過它獲得,
listSub.SelectedIndices[0];
編輯:如果啟用了Multiselect,則將遍歷SelectedIndices數組以獲取所有內容。
編輯2: ItemSelectionChanged偵聽器,這對我有用...
void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if(e.IsSelected)
MessageBox.Show(e.ItemIndex.ToString());
}
我可以給您最后單擊的項目...您需要添加一個評估,無論是否選中它,但這是我在MouseDown處理程序中所做的事情:
private void listSub_MouseDown(object sender, MouseEventArgs e)
{
ListViewItem lastClicked = listSub.Items.Cast<ListViewItem>().SingleOrDefault(item => item.Bounds.Contains(e.X, e.Y));
if (lastClicked != null)
{
MessageBox.Show(lastClicked.Index.ToString());
}
}
編輯
沒有Linq:
private void listSub_MouseDown(object sender, MouseEventArgs e)
{
foreach (ListViewItem listViewItem in listSub.Items)
{
if (listViewItem.Bounds.Contains(e.X,e.Y))
{
MessageBox.Show(listViewItem.Index.ToString());
break;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.