it-swarm.com.de

Wie setze ich den Combobox-Standardwert?

In windows form hat es eine ComboBox, die Daten von der DataSource gebunden haben.

Beim Festlegen der Texteigenschaft für eine ComboBox. 

Ausgewählte ComboBox -> Eigenschaft -> Text: "--Select--".

Design-Seite zeigt den angegebenen Text. Beim Ausführen der Anwendung verschwand der angegebene Text und der anfängliche Indexwert eines ComboBox-Elements, der aus der DataSource stammt.

Also gab ich den ComboBox-Text im Formular laden. Ich meine im Konstruktor

public myform()
{
     InitializeComponent();
     ComboBox.Text="--Select--";
}

link überarbeitet und mehr. Aber ..

Standardelement in Kombinationsfeld setzen

https://msdn.Microsoft.com/de-de/library/system.windows.forms.combobox.text(v=vs.110).aspx

Die durchsuchte Menge der Fragen in SO hängt von der ComboBox ab. Aber diese lösen nie meinen Fall

Bearbeitet

 enter image description here

Klicken Sie in dieser Combobox auf die rechte obere Ecke. Daraufhin habe ich Daten für meine Combobox mit Datasouce ausgewählt. Ich habe keinen Code zum Hinzufügen von Elementen in die Combobox geschrieben.

6
User6667769

Sie können so etwas tun:

    public myform()
    {
         InitializeComponent(); // this will be called in ComboBox ComboBox = new System.Windows.Forms.ComboBox();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'myDataSet.someTable' table. You can move, or remove it, as needed.
        this.myTableAdapter.Fill(this.myDataSet.someTable);
        comboBox1.SelectedItem = null;
        comboBox1.SelectedText = "--select--";           
    }
7
Vandita

Angenommen, Sie binden Ihre Combobox an einen List<Person>.

List<Person> pp = new List<Person>();
pp.Add(new Person() {id = 1, name="Steve"});
pp.Add(new Person() {id = 2, name="Mark"});
pp.Add(new Person() {id = 3, name="Charles"});

cbo1.DisplayMember = "name";
cbo1.ValueMember = "id";
cbo1.DataSource = pp;

An dieser Stelle können Sie die Texteigenschaft nicht beliebig festlegen, sondern müssen Ihrer Liste ein Element hinzufügen, bevor Sie die Datenquelle festlegen 

pp.Insert(0, new Person() {id=-1, name="--SELECT--"});
cbo1.DisplayMember = "name";
cbo1.ValueMember = "id";
cbo1.DataSource = pp;
cbo1.SelectedIndex = 0;

Dies bedeutet natürlich, dass Sie einen Prüfcode hinzufügen müssen, wenn Sie versuchen, die Informationen aus dem Kombinationsfeld zu verwenden

if(cbo1.SelectedValue != null && Convert.ToInt32(cbo1.SelectedValue) == -1)
    MessageBox.Show("Please select a person name");
else
    ...... 

Der Code ist derselbe, wenn Sie eine DataTable anstelle einer Liste verwenden. Sie müssen an der ersten Position der Rows-Auflistung der Datentabelle eine gefälschte Zeile hinzufügen und den Anfangsindex der Combobox festlegen, um die Dinge klarer zu machen. Das einzige, was Sie beachten müssen, ist der Name der datierbaren Spalten und die Spalten, die einen Wert ungleich Null enthalten sollten, bevor Sie die Zeile der Auflistung hinzufügen

In einer Tabelle mit drei Spalten wie ID, Vorname, Nachname mit ID, Vorname und Nachname müssen Sie dies tun

DataRow row = datatable.NewRow();
row["ID"] = -1;
row["FirstName"] = "--Select--";    
row["LastName"] = "FakeAddress";
dataTable.Rows.InsertAt(row, 0);
2
Steve