Combobox über SelectedIndex mit bestimmtem Wert vorselektieren
-
Hallo!
In meiner Anwendung speichere ich zunächst eine neue Firma(name), mit Rückgabewert der neu angelegten Id:
int iNewCompanyId = AddDataToCompany(tbAddNewCompany.Text);
Nun wird die Combobox mit den Firmennamen erneut befüllt, so dass auch der Neueintrag enthalten ist:
cbAddLocationCompany.Items.Clear(); cbAddLocationCompany.Items.AddRange(GetCompanies().ToArray());
Und nun das Problem - ich würde gerne den neuen Eintrag direkt vorselektieren - mittels SelectedIndex - so dass daraufhin auch ein Event ausgelöst wird.
Allerdings weiß ich nicht, wie ich den "richtigen" Index ansprechen kann?!
cbAddLocationCompany.SelectedIndex = cbAddLocationCompany.Items.IndexOf(iNewCompanyId); cbAddLocationCompany.SelectedIndex = cbAddLocationCompany.Items.IndexOf("Firmenname");
Beide Versuche gehen nicht...
Kann mir bitte jemand helfen, wie ich den Index auf den richtigen Eintrag ändern und somit auch das Event auslösen kann?
Danke!
-
Hi,
die Frage ist was deine iNewCompanyId darstellt. Im Zweifel musst du wahrscheinlich sowas in der Art machen:
cbAddLocationCompany.SelectedItem = GetCompanies().FirstOrDefault(company => company.Id == iNewCompanyId);
Das ist aber völlig geraten, du musst halt irgendwie rausbekommen welchen Index im Array deine neu angelegte Firma hat, dies ist aus den gegenbenen Informationen meiner Meinung nach nicht ableitbar.
mfg
KaPtainCugel
-
Ich weiss nicht ob's Dir hilft, aber ich hatte auch mal bei Combo-Boxen das Problem, dass bei Aufnahme eines neuen Eintrages der SelectedIndex dann auf -1 steht.
Ich hab das Problem mit einer Re-Selektion gelöst:comboBox.SelectedIndex = comboBox.Items.IndexOf(comboBox.Text);
Dadurch wird aus der -1 dann der richtige Index des neuen Eintrags.
-
Danke Euch beiden, leider bleibt die Combobox leer und ein Event wird dann auch nicht ausgelöst.
iNewCompanyId ist die Id des neuen Eintrags ... eigentlich klar, dass diese nicht gleich dem Index sein kann, nur hatte ich keine bessere Idee mehr.
iNewCompanyId wäre in meinem Beisiel 745, der passende Index wäre aber 127
Ich denke der Ansatz
cbAddLocationCompany.SelectedItem = GetCompanies().FirstOrDefault(company => company.Id == iNewCompanyId);
ist gar nicht schlecht, nur sollte ich das noch auf den SelectedIndex umbiegen.
Bin nur mit Lamdas etc. nicht so bewandert, ich hoffe, ich bekomme das hin.
-
Hab nun folgende Lösung gefunden:
int iNewCompanyId = AddDataToCompany(tbAddNewCompany.Text); cbAddLocationCompany.Items.Clear(); cbAddLocationCompany.Items.AddRange(GetCompanies().ToArray()); int index = cbAddLocationCompany.FindString(tbAddNewCompany.Text); cbAddLocationCompany.SelectedIndex = index;