如何在c# wpf中仅当用户更改组合框的选择时触发selectionChange事件

本文关键字:选择 组合 事件 selectionChange wpf 用户 | 更新日期: 2023-09-27 18:03:24

我想知道如何触发一个组合框的selectionChange事件只有当用户自己改变列表的选择。(避免其他情况)我找到了一个解决方案,但我有一些错误。你能帮我吗?

https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted (v = vs.110) . aspx

我在我的。cs文件中添加了System.Windows.Forms,它说System.Windows.Controls之间有歧义。"组合框"answers"系统。windows。窗体"。与下面的第一行代码组合。

我不知道如何将sender转换为comboBox。

ComboBox senderComboBox = (ComboBox)sender;
        if (senderComboBox.SelectionLength > 0)
        {
            //code here
        }

谢谢你的帮助!

如何在c# wpf中仅当用户更改组合框的选择时触发selectionChange事件

您正在尝试引用WinForms ComboBox而不是WPF ComboBox。你可以通过监听控件的SelectionChanged事件来了解用户何时改变了选择。

来自dotnetperls

的示例代码

XAML

<ComboBox
    HorizontalAlignment="Left"
    Margin="10,10,0,0"
    VerticalAlignment="Top"
    Width="120"
    Loaded="ComboBox_Loaded"
    SelectionChanged="ComboBox_SelectionChanged"/>

CS文件

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // ... Get the ComboBox.
    var comboBox = sender as ComboBox;
    // ... Set SelectedItem as Window Title.
    string value = comboBox.SelectedItem as string;
    this.Title = "Selected: " + value;
}

这种方法对我很有效- XAML ComboBox SelectionChanged Fires OnLoad

基本上只在表单加载后连接ComboBox_SelectionChanged事件—这将使您绕过将触发onload的编程更改。除此之外,我就不确定了。这可能是你需要使用一个不同的事件,但我还没有研究过这个