I found the following bug:

When manualy selecting a new item from a ComboBox the OnSelectedItemChanged
is not called. When settings SelectedItem or SelectedIndex from code, it is
correctly called. A small test program to duplicate the bug follows:


using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;

namespace BugTester
{
public class BugForm : System.Windows.Forms.Form
{
private TestComboBox comboBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public BugForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.comboBox1 = new BugTester.TestComboBox();
this.SuspendLayout();
//
// comboBox1
//
this.comboBox1.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Items.AddRange(new object[] {
"Item 1",
"Item 2",
"Item 3"});
this.comboBox1.Location = new System.Drawing.Point(8, 8);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(280, 21);
this.comboBox1.TabIndex = 0;
//
// BugForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 38);
this.Controls.Add(this.comboBox1);
this.Name = "BugForm";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

protected override void OnLoad( EventArgs e )
{
Debug.WriteLine( "Setting Selected Index" );
comboBox1.SelectedIndex = 1;

Debug.WriteLine( "Setting Selected Item" );
comboBox1.SelectedItem = comboBox1.Items[2];

Debug.WriteLine( "Now selected an item manualy" );

base.OnLoad( e );
}

[STAThread]
static void Main()
{
Application.Run( new BugForm() );
}
}

public class TestComboBox : ComboBox
{
protected override void OnSelectedIndexChanged( EventArgs e )
{
Debug.WriteLine( "OnSelectedIndexChanged called" );
base.OnSelectedIndexChanged( e );
}

// this method is not called when manualy selecting a new item in
the combobox
protected override void OnSelectedItemChanged(EventArgs e)
{
Debug.WriteLine( "OnSelectedItemChanged called" );
base.OnSelectedItemChanged( e );
}
}
}