-1

Hi could some kind person help. I have two user controls. One with a textbox, the other with a Combobox. The Main window will perform calculation routine as soon as combos and textboxes are modified. The Textbox version works, the ComboBox doesn't. The only difference I can see is Textbox uses TextChangedEventArgs whereas Combobox uses System.EventArgs

Any ideas? Thanks

// UserControl - with TextBox

public event RoutedEventHandler ucTextChanged;

        private void OnTextChanged(object sender, RoutedEventArgs e)
        {
            if (ucTextChanged != null)
            {
                ucTextChanged(this, new RoutedEventArgs());
            }
        }

       private void txtValue_TextChanged(object sender, TextChangedEventArgs e)
        {
            OnTextChanged(sender, e);
        }

// UserControl - ComboBox

      public event RoutedEventHandler ucComboChanged;


        private void OnComboChanged(object sender, RoutedEventArgs e)
        {
            if (ucComboChanged != null)
            {
                ucComboChanged(this, new RoutedEventArgs());
            }
        }

      private void ucCombo_DropDownClosed(object sender, System.EventArgs e)
        {
        OnComboChanged(sender, e);      
        }

1 Answers1

0

Try looking at the event SelectionChanged of the ComboBox ( https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.combobox.onselectionchanged )

XAML:

<ComboBox SelectionChanged="ucCombo_SelectionChanged"></ComboBox>

C#:

    private void ucCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // your code here...
        OnComboChanged(sender, e);
    }
fede
  • 66
  • 6
  • The combo is in a UserControl, so there needs to be some connection from the (many) user controls, to the main form. I seem to have something working, adding these on both the UserControl and Main form. ucCombo.AddHandler(ComboBox.KeyUpEvent, new RoutedEventHandler(ComboHandler)); ucCombo.AddHandler(ComboBox.SelectionChangedEvent, new RoutedEventHandler(ComboHandler)); – Michael Boyd Feb 19 '21 at 23:05