簡體   English   中英

ListBox SelectionChanged事件:獲取更改前的值

[英]ListBox SelectionChanged event : get the value before it was changed

我正在開發一個C#wpf應用程序,其中有一個列表框,我想獲得在更改發生之前選擇的元素的值

我成功地以這種方式獲得了新的價值:

<ListBox SelectionChanged="listBox1_SelectedIndexChanged"... />

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        test.add(listBox1.SelectedItem.ToString());
    }

但我需要像listBox1.UnselectedItem這樣的listBox1.UnselectedItem來獲取在更改期間未被選中的元素。 任何想法 ?

SelectionChangedEventArgs有一個名為RemovedItems的屬性,其中包含使用新選擇刪除的項目列表。 您可以使用SelectionChangedEventArgs替換EventArgs並訪問參數的屬性(Casting也可以,因為它是一個子類)。

    private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        List<string> oldItemNames = new List<string>();
        foreach(var item in e.RemovedItems)
        {
            oldItemNames.Add(item.ToString());
        }
    }

一種簡單的方法是使用private int _selectedIndex來存儲SelectedIndex屬性中的值,如下所示:

private int _selectedIndex;

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    test.add(listBox1.SelectedItem.ToString());

    // grab the _selectedIndex value before we update it.
    var oldValue = _selectedIndex;
    _selectedIndex = listBox1.SelectedIndex;

   // code utilizing old and new values
   // oldValue stores the index from the previous selection
   // _selectedIndex has the value from the current selection
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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