簡體   English   中英

獲取焦點項目在ListView中的位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM