2010-11-08 12 views
3

Est-ce que quelqu'un connaît un événement ou une séquence d'événements pouvant être géré lorsqu'un utilisateur clique sur un élément dans une zone de liste déroulante? Actuellement, les seuls événements que je vois être le feu de ComboBox dans WinForms est SelectedIndexChanged ou SelectedValueChanged. Le problème avec ces événements est qu'ils sont également déclenchés sous de nombreux autres scénarios, par exemple lorsque l'utilisateur appuie sur la flèche haut ou bas (même si le ComboBox n'est pas ouvert).Gestion des événements de clic sur un élément dans une zone de liste déroulante

ComboBox.SelectedIndexChanged += (o, e) => Console.WriteLine("ComboBox_SelectedIndexChanged"); 
ComboBox.SelectedValueChanged += (o, e) => Console.WriteLine("ComboBox_SelectedValueChanged"); 

Des pensées?

+0

La valeur SelectedIndex a vraiment * changé *. Cela ne devrait pas être un problème. Sous-classer la fenêtre déroulante est un code très moche pour obtenir le droit mais est techniquement possible avec la classe NativeWindow. –

Répondre

3

Si vous demandez à quel moment l'utilisateur clique sur un élément de la zone de liste déroulante pour le sélectionner, vous pouvez utiliser l'événement ComboBox.SelectionChangeCommitted.

+0

Cela a aidé, avec vérification pour voir si la liste déroulante est tombé. La seule fois où cet événement se déclenche lorsque la zone de liste déroulante est déplacée, c'est lorsque l'utilisateur clique dessus ou frappe. var comboBox = expéditeur (ComboBox); si (comboBox.DroppedDown) DoSomething (comboBox.SelectedItem); –