ComboBox.SelectedValue entspricht nicht den angezeigten text, wenn DropDownStyle = DropDownList in Windows 7

Sagen wir, wir haben den folgenden code in einer Windows-Anwendung:

ComboBox comboBox = new ComboBox()
{
    AutoCompleteMode = AutoCompleteMode.SuggestAppend,
    AutoCompleteSource = AutoCompleteSource.ListItems,
    DataSource = new string[] { "", "Ark", "Boat", "Bucket" },
    DropDownStyle = ComboBoxStyle.DropDownList
};
this.Controls.Add(comboBox);

TextBox textBox = new TextBox()
{
    Left = comboBox.Right,
    Top = comboBox.Top,
    ReadOnly = true
};
textBox.DataBindings.Add("Text", comboBox, "SelectedValue");
this.Controls.Add(textBox);

Keine Magie hier, nur ein ComboBox gebunden, um eine Liste von strings. Die TextBox zeigt die SelectedValue des ComboBox.

Ich bin immer unerwartetes Verhalten geben, wenn ich "Eimer" in der ComboBox und Reiter entfernt. Für einige Grund, die ComboBox zeigt "Boot" aber die TextBox zeigt "Eimer". Ich würde erwarten, dass Sie sowohl auf die Anzeige "Eimer".

Verhält es sich, wie erwartet, wenn ich die DropDownStyle zu DropDown, aber ich don ' T möchten, dass Benutzer in der Lage sein zu geben, was Sie wollen. Sie sollten nur geben können Elemente in der Liste.

Noch interessanter ist, dass nach Eingabe von "Eimer" und die Tab Weg, wenn ich den Typ "Eimer" wieder zeigt es "Eimer" in beiden. Wenn ich einen Dritten Versuch, geht es zurück zum "Boot" für die ComboBox und "Eimer" für das `Textfeld'. So wie es scheint, ist es mit dem Fahrrad durch alle B ' s.

Ich habe nicht bemerkt, bis ich ein Upgrade von XP auf Windows 7 vor kurzem. Ich sehe nicht, wie das hätte nichts damit zu tun, aber ich bin werfen es sowieso.

Ob dieses Verhalten korrekt ist, kann mir jemand sagen, was ich tun sollte, um meinen erwarteten Verhalten?

UPDATE scheint diese ist im Zusammenhang mit Windows 7. Alles verhält sich wie erwartet in Windows XP-Modus. Kann jemand mit Windows 7 versuchen meinen code, und stellen Sie sicher, dass bin ich nicht verrückt?

Ich habe deine code genau und warf es auf eine frische form und kann das Verhalten reproduzieren. Sie können versuchen, verbinden Sie das SelectedIndexChanged-Ereignis und werfen einige Meldungen auf der Konsole und sehen, was geschieht, geben Sie in der combo.
Ich fügte comboBox.SelectedIndexChanged += new EventHandler(delegate { Console.WriteLine("SelectedIndex = {0}", comboBox.SelectedIndex); }); und die Ausgabe sagt der SelectedIndex geändert auf "2" und dann "3", die dem entspricht, was die TextBox zeigt.
Wenn dies ein reproduzierbarer bug ist, sollten Sie es auf Microsoft Connect: connect.microsoft.com/VisualStudio
Ich hatte gehofft, jemand anderes läuft Win7 konnte erst bestätigen, aber ich habe Voraus gegangen und öffnete Sie einen Fehler: connect.microsoft.com/VisualStudio/feedback/....
Ich habe es gerade ausprobiert und ich kann wieder zu (obwohl ich habe nicht versucht, um zu sehen, ob es repros auf XP). Ich habe von Ihnen positiv bewertet werden Connect bug erklärt und ich kann repro es. Diese Frage kann nun geschlossen werden.

InformationsquelleAutor Ecyrb | 2010-01-04

Schreibe einen Kommentar