C#、.NET 4.0、VS2010。
WPF 新手。我的主窗口上有一个 ComboBox。我 Hook 了所述组合框的 SelectionChanged 事件。但是,如果我在事件处理程序中检查组合框的值,它具有旧值。这听起来更像是“SelectionChanging”事件,而不是 SelectionChanged 事件。
如何在实际发生选择后获取 ComboBox 的新值?
目前:
this.MyComboBox.SelectionChanged += new SelectionChangedEventHandler(OnMyComboBoxChanged);
...
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
string text = this.MyComboBox.Text;
}
请注意,如果我使用在事件参数中传递的对象,我会得到相同的行为,例如e.原始来源。
最佳答案
根据 MSDN,e.AddedItems
:
Gets a list that contains the items that were selected.
所以你可以使用:
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
string text = (e.AddedItems[0] as ComboBoxItem).Content as string;
}
如果您对来自 sender
的 Items
使用 string
值,您也可以使用 SelectedItem
:
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
string text = (sender as ComboBox).SelectedItem as string;
}
或
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
string text = ((sender as ComboBox).SelectedItem as ComboBoxItem).Content as string;
}
因为 Content
和 SelectedItem
都是对象,所以更安全的方法是使用 .ToString()
而不是 as string
关于c# - ComboBox- SelectionChanged 事件具有旧值,而不是新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961118/