Je veux avoir un "select-only" ComboBox
qui fournit une liste d'éléments parmi lesquels l'utilisateur peut faire son choix. La saisie doit être désactivée dans la partie texte du contrôle ComboBox
.
Ma recherche initiale de ceci a donné lieu à une suggestion trop complexe et peu judicieuse pour capturer l'événement KeyPress
.
Pour que la portion de texte d'un ComboBox ne puisse pas être modifiée, définissez la propriété DropDownStyle sur "DropDownList". La ComboBox est maintenant essentiellement sélectionnée uniquement pour l'utilisateur. Vous pouvez le faire dans le concepteur Visual Studio ou en C # comme ceci:
stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
Lien vers la documentation de propriété ComboBox DropDownStyle sur MSDN.
Pour ajouter une référence à l'interface graphique Visual Studio, vous pouvez trouver les options DropDownStyle
sous les propriétés du ComboBox sélectionné:
Ce qui ajoutera automatiquement la ligne mentionnée dans la première réponse au Form.Designer.cs InitializeComponent()
, comme ceci:
this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
Restez sur votre zone de liste déroulante et recherchez la propriété DropDropStyle à partir de la fenêtre Propriétés, puis choisissez DropDownList.
COMBOBOXID.DropDownStyle = ComboBoxStyle.DropDownList;
Pour continuer à afficher les données dans l'entrée après la sélection, procédez comme suit:
VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
e.Handled = True
End Sub
C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}