gpt4 book ai didi

c# - ComboBox- SelectionChanged 事件具有旧值,而不是新值

转载 作者:IT王子 更新时间:2023-10-29 03:38:19 26 4
gpt4 key购买 nike

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;
}

如果您对来自 senderItems 使用 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;
}

因为 ContentSelectedItem 都是对象,所以更安全的方法是使用 .ToString() 而不是 as string

关于c# - ComboBox- SelectionChanged 事件具有旧值,而不是新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com