【问题标题】:How to trigger a selectionChange event only when users change the selection of a combobox in C# wpf?仅当用户在 C# wpf 中更改组合框的选择时,如何触发 selectionChange 事件?
【发布时间】:2017-05-18 09:12:09
【问题描述】:

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

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

我在我的 .cs 文件中添加了 System.Windows.Forms,它说在“System.Windows.Controls.ComboBox”和“System.Windows.Forms.ComboBox”之间存在歧义,第一行代码如下.

我不知道如何将我的发件人转换为组合框。

ComboBox senderComboBox = (ComboBox)sender;

        if (senderComboBox.SelectionLength > 0)
        {
            //code here
        }

感谢您的帮助!

【问题讨论】:

    标签: c# wpf selectionchanged


    【解决方案1】:

    您尝试引用 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;
    }
    

    【讨论】:

    • 我对这个问题的解释是,他想明确知道用户何时更改了值 - 而不是在运行时以编程方式更改值。
    • @AdrianK 他提出的问题是由于他引用了 Winforms 中的 ComboBox 而不是 WPF。如果用户显式更改了值,则应该触发 SelectionChanged 事件。无论是在程序运行时更改还是用户更改,都无关紧要。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      相关资源
      最近更新 更多