Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fire comboBox SelectedIndexChanged only from user click

I wrote a method to handle a comboBox's SelectedIndexChanged event.

In the constructor I populated the comboBox, and this activated my event-handling method. Which I don't want since nobody clicked on the comboBox.

Is there an easy way to get the comboBox not to fire the event unless the user clicked it?

If that is not possible, is there a way to disconnect the event to the method temporarily? Could I just set "my_combo.SelectedIndexChanged = null" and then create a new System.EventHandler?

Or I guess I could create some kind of boolean member variable that I can switch on or off and put a branch check in my method. That seems like a kludge, though.

like image 610
micahhoover Avatar asked Sep 29 '11 20:09

micahhoover


2 Answers

I have done it a lot number of times. Solution1: Delete EventHandler from designer. Populate the combobox and then set EventHandler.

Combo1.SelectedIndexChanged += new EventHandler Combo1_SelectedIndexChanged;

But it will work only if you are populating the combobox once.If you are doing it for many number of times, then you may be in a mess.

Solution2: Its my preference and I use it regularily. Change your selection change event as:

private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
   ComboBox cb = (ComboBox)sender;
   if(!cb.Focused)
   {
      return;
   }
   // Here is your Code for selection change
}

So now the event will be fired only if its in focus. Hope you were looking for the same. Hope it Helps

like image 171
Sandy Avatar answered Oct 24 '22 04:10

Sandy


Not sure if this is any use now but I found this answer, which seems cleaner to me.

From the MSDN Library - ComboBox.SelectionChangeCommitted Event

"SelectionChangeCommitted is raised only when the user changes the combo box selection. Do not use SelectedIndexChanged or SelectedValueChanged to capture user changes, because those events are also raised when the selection changes programmatically."

like image 37
user692942 Avatar answered Oct 24 '22 02:10

user692942