Diciamo che abbiamo il seguente codice in un'applicazione Windows:ComboBox.SelectedValue non corrisponde visualizzazione del testo quando DropDownStyle = DropDownList in Windows 7
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);
Niente magia qui, solo un ComboBox
legato a una lista di stringhe . Lo TextBox
visualizza lo SelectedValue
dello ComboBox
.
Ho un comportamento imprevisto quando digito "Bucket" nello ComboBox
e nella scheda. Per qualche motivo lo ComboBox
visualizza "Boat" ma lo TextBox
visualizza "Bucket". Mi aspetterei che entrambi mostrino "Bucket".
Si comporta come previsto se cambio lo DropDownStyle
in DropDown
, ma non voglio che gli utenti siano in grado di digitare tutto ciò che desiderano. Dovrebbero essere in grado di digitare solo gli elementi che sono nella lista.
Ancora più interessante è che, dopo aver digitato "Bucket" e tabulazione, se si digita "Bucket" di nuovo verrà visualizzato "Bucket" in entrambi. Se faccio un terzo tentativo, torna a "Boat" per lo ComboBox
e "Bucket" per il "TextBox". Quindi sembra che stia attraversando tutte le B's.
Non l'ho notato fino a quando non ho eseguito l'aggiornamento da XP a Windows 7 di recente. Non vedo come questo possa avere qualcosa a che fare con questo, ma lo sto buttando fuori comunque.
Se questo comportamento è corretto, qualcuno può dirmi cosa dovrei fare per raggiungere il mio comportamento previsto?
UPDATE Sembrerebbe questo è correlato a Windows 7. Tutto si comporta come previsto in Windows XP Mode. Qualcun altro che esegue Windows 7 può provare il mio codice e verificare che non sia pazzo?
Ho preso esattamente il codice e l'ho gettato su una nuova forma e non posso riprodurre il comportamento. Potresti provare a collegare l'evento SelectedIndexChanged e inserire alcuni messaggi della console e vedere cosa sta succedendo mentre digiti nella combo. – TheHurt
Ho aggiunto 'comboBox.SelectedIndexChanged + = new EventHandler (delegato {Console.WriteLine (" SelectedIndex = {0} ", comboBox.SelectedIndex);});' e l'output dice che 'SelectedIndex' è cambiato in" 2 "e quindi a "3", che corrisponde a ciò che mostra il 'TextBox'. – Ecyrb
Se si tratta di un bug riproducibile, è necessario inviarlo a Microsoft Connect all'indirizzo: https://connect.microsoft.com/VisualStudio/ –