title: WinForms ComboBox SelectedIndexChanged not firing when typing few chars followed by Alt+Down
body: <p><strong>In short</strong></p>
  
  <p>When I type a character in a ComboBox, press Alt+Down followed by Enter or Tab, the SelectedIndexChanged event doesn't fire, even though the SelectedIndex value <em>does</em> change!  Why doesn't the event fire?</p>
  
  <p><strong>Update</strong>
  The same error occurs if you type a character, press Alt+Down and then type Esc. You would expect the Esc to cancel the change. However, the SelectedIndex <em>does</em> change, and the SelectedIndexChanged event doesn't fire.</p>
  
  <p>What should happen if you just type Alt+Down, use the arrow keys to browse to an entry, and <em>then</em> type Esc? Should the selected index be set back to its original value?</p>
  
  <hr>
  
  <p><strong>Not so short</strong></p>
  
  <p>I have a WinForm application with a ComboBox on it. The ComboBox' SelectedIndexChanged event is wired up to a event handler that shows the SelectedItem in a Label control. The ComboBox' Items collection has three values: "One", "Two", and "Three".</p>
  
  <ul>
  <li>When I select an item with the mouse, the event fires.</li>
  <li>When I scroll the mouse, the event fires.</li>
  <li>When I use Alt+Down to expand the combobox and walk through the items with Up and Down, the event fires.</li>
  <li>But... When I type in the first character of a value, <em>then</em> press Alt+Down, followed by Enter or Tab, the value does get selected and is shown in the combobox, but the event doesn't fire.</li>
  </ul>
  
  <p>I've also added a button that shows the SelectedIndex. It shows the SelectedIndex <em>has</em> changed. So even though the SelectedIndex does change, the SelectedIndexChanged event does not fire!</p>
  
  <p><em>If I just type in a valid value like</em> <code>One</code> <em>the event doesn't fire either, but in that case a click on the button reveals the SelectedIndex indeed hasn't changed. So in that case the behavior is normal.</em></p>
  
  <hr>
  
  <p>To reproduce, create a Form and add a ComboBox, a Label and a Button. Place the following code in the Form1.cs:</p>
  
  <pre><code>using System;
  using System.Windows.Forms;
  
  namespace ComboBoxSelectedIndexChanged
  {
      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
              comboBox1.Items.AddRange(new object[] {
                  "One",
                  "Two",
                  "Three"
              });
          }
  
          private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
          {
              label1.Text = "Selected index: " + comboBox1.SelectedIndex;
          }
  
          private void button1_Click(object sender, EventArgs e)
          {
              MessageBox.Show("Selected item: " + comboBox1.SelectedItem +
                  "\nSelected index: " + comboBox1.SelectedIndex);
          }
      }
  }
  </code></pre>