Ich habe eine ComboBox
, die eine Liste als DataSource
verwendet. Da das ausgewählte Element ComboBox
zunächst leer bleiben soll, füge ich am Anfang der Liste eine leere Zeile ein, die ich entfernen möchte, sobald die erste SelectedIndexChanged
auftritt.Ein anfänglich leeres Element in ComboBox DataSource
Das Problem ist, dass es mir gelingt, das leere Element wieder zu entfernen, sobald es hinzugefügt wurde. Es scheint aus dem DataSource
(getestet mit Console.WriteLine(DataSourceList[0].ToString());
) entfernt zu werden, aber es bleibt eine Option in der ComboBox
. Was zur Ente mache ich falsch?
Initial Bindung
// Set the data source + 1 blank spot
cboDropDown.DataSource = viewModel.dataList;
viewModel.dataList.Insert(0, String.Empty);
// Bind the selected value
Binding bindSelItem = new Binding("SelectedItem", viewModel, "selectedItem");
cboDropDown.DataBindings.Add(bindSelItem);
Ausgewählte Index geändert
private void cboDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
// Write the first element to the console (debug purpose)
Console.WriteLine("First element is: " + viewModel.dataList[0].ToString());
// If the first element is blank, remove and reset datasource
if (viewModel.dataList[0].ToString() == String.Empty)
{
// Remove item at index 0
viewModel.dataList.RemoveAt(0);
// Write to console to confirm that it is removed
Console.WriteLine("First element is: " + viewModel.dataList[0].ToString());
// Reset data source for ComboBox
cboDropDown.DataSource = viewModel.dataList;
}
}
Es scheint, wie das Problem etwas zu der Tatsache verbunden ist, dass 'SelectedIndexChanged' durch die Bindungsverfahren selbst genannt wird. Ich habe erwartet, dass es zum ersten Mal aufgerufen wird, wenn der Benutzer zu ComboBox gewechselt ist. – Noceo