2016-10-26 6 views
0

Ich suche nach Hilfe oder Rat. Ich versuche, eine Nachricht in einem Kombinationsfeld zu platzieren, das den Benutzer auffordert, eine Auswahl zu treffen. Alles, was ich gelesen habe, ist ,So zeigen Sie eine Combobox-Nachricht an

zu sein, aber ich habe versucht, dies an ein paar verschiedenen Orten und es scheint nicht in meinem Code zu arbeiten.

Ich frage mich, ob ich etwas ganz offensichtlich übersehen habe. Irgendwelche Vorschläge?

Code:

namespace DatabaseConnection 
{ 
    public partial class MainWindow : Window 
    { 
    public MainWindow() 
    { 
     InitializeComponent(); 
     //this dosen't work 
     this.worldCbx.Text = "Select a Country"; 
     SqlConnection con = new SqlConnection(@"Data Source=>This works fine.mdf;Integrated Security=True;Connect Timeout=30"); 
     con.Open(); 
     SqlCommand com = new SqlCommand("SELECT name FROM bbc", con); 
     SqlDataReader sdr = com.ExecuteReader(); 
     while (sdr.Read()) 
     { 
      this.worldCbx.Items.Add(sdr["name"]); 
     } 
     sdr.Close(); 
    } 
    private void worldCbx_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     //this dosen't work either. 
     this.worldCbx.Text = "Select a Country"; 
    } 
} 

}

Antwort

0

Die comboBox.Text = „Wählen Sie ein Land“ gesetzt grundsätzlich die Auswahl des comboBox auf „Wählen Sie ein Land“, wenn es in der Liste Elemente vorhanden sind. Also, wenn Sie eine comboBox wo die Einzelteile sind ...

Wählen Sie ein Land

USA

Russland

Kanada

Mexiko

Dann wird der Befehl comboBox.Text = „ Wählen Sie "Ein Land", um den ausgewählten Wert der ComboBox auf "Wählen Sie ein Land" zu setzen, da es ein Element in den Elementen der ComboBox ist. Um die ComboBox so zu steuern, wie Sie es beschreiben, verwenden Sie den folgenden Code.

Das Problem bei diesem Ansatz besteht jedoch darin, dass die ComboBox nach Auswahl eines Landes sofort zu "Select A Country" zurückkehrt. Der Benutzer könnte also vergessen, was er gerade ausgewählt hat oder nicht sicher ist. In beiden Fällen kann dies aus Benutzersicht verwirrend sein.

Es klingt wie ein einfaches Label "Wählen Sie ein Land" über der ComboBox wäre eine bessere Lösung. Hoffe das hilft.

comboBox1.Items.Add("Select A Country"); 
for (int i = 1; i < 15; i++) 
{ 
    comboBox1.Items.Add("Country_" + i); 
} 
comboBox1.SelectedIndex = 0; 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // do something with the selected index 
    // - then reset the comboBox to "Select a country 
    this.comboBox1.SelectedIndexChanged -= new System.EventHandler(this.comboBox1_SelectedIndexChanged); 
    comboBox1.Text = "Select A Country"; 
    this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); 
} 
+0

Danke dafür. Ihr Beispiel hat getan, wofür ich es benötigt habe, aber wie Sie beschrieben haben, kann es für den Endbenutzer verwirrend sein. Ich glaube, ich habe versucht, das so kompliziert zu machen, dass es notwendig ist, und ein einfaches Etikett wird das genauso gut machen. Danke noch einmal! – cdjd44

+0

@ cdjd44 Gern geschehen. Ich mache das Gleiche, die Vereinfachung von Dingen kann eine Herausforderung sein. Ich nenne es Kodierungsmyopie, wo man sich so auf einen Ansatz konzentriert, dass man das Endergebnis vergisst. Viel Glück. – JohnG