views:

170

answers:

1

If I have a ComboBox that has a SelectionChanged event, it fires when I'm loading the control.

So at page load I set the SelectedValue and the SelectionChanged event fires which is not what I want to happen.

What is the accepted apporach to stopping this?

A: 

Two obvious solutions to this would be 1) Wait until the Loaded event of the Window/Page/UserControl which contains the ComboBox and hook up SelectionChanged there...eg in the constructor:

// set the inital selected index for the combo box here...

this.Loaded += (s, args) =>
               {
                    cmbBox.SelectionChanged += 
                            new SelectionChangedEventHandler(HandleChanged);
               };

or 2) Check that the ComboBox has loaded in the selection changed handler before doing anything and return if it hasn't...eg in the handler:

if (!cmbBox.IsLoaded)
        return;

I would prefer number 1 as it doesn't require the check every time the SelectionChanged handler is fired.

Simon Fox
Great thanks for that
griegs