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