Thomas Bandt

Über mich | Kontakt | Archiv

[CF] SelectedIndexChanged Event wird beim binden gefeuert

Das sind Probleme, wie man sie aus der ASP.NET Welt her nicht kennt (ein Glück, sonst wäre der Einstieg wahrscheinlich noch schwerer als er so schon ist):

Befüllt man eine Combobox beim Initialisieren seines Forms, und ist für diese Combobox ein Event Handler registriert, der beim Ändern des gewählten Items ausschlägt, dann kommt man mit unter in arge Nöte: nämlich dann, wenn der Handler eine Methode aufruft, die die Box ebenfalls (wieder) befüllt.

Denn dieser Vorgang hier:

DataSet ds = new DataSet();
SqlCeDataAdapter da = new SqlCeDataAdapter();
da.SelectCommand = cmd;

da.Fill(ds);

ListManufacturer.DataSource = ds.Tables[0].DefaultView;
ListManufacturer.DisplayMember = "Hersteller";

scheint das Event auszulösen. Verwunderlich eigentlich, dass das Ganze nicht in einer Endlosschleife endet, da der Code ja auch durch den Event Handler aufgerufen wird.

Wie dem auch sei: die Lösung ist natürlich, den Eventhandler erst nach dem ersten Befüllen zu definieren:

public Search()
{
   InitializeComponent();
   GetManufacturer();
   this.ListManufacturer.SelectedIndexChanged += new System.EventHandler(this.ListManufacturer_SelectedIndexChanged);
}



« Zurück  |  Weiter »