2011-08-25 3 views
0

TextBoxes et NumericUpDowns ont la propriété impaire de ne pas vous permettre de les désélectionner une fois qu'elles sont sélectionnées. Lorsque mon utilisateur sélectionne NumericUpDown et clique ailleurs sur le formulaire, NumericUpDown doit être désélectionné.Comment faire pour détecter MouseDown sur un contrôle non-TextBox?

Malheureusement, ce n'est pas le cas. Actuellement, je ne fais que gérer l'événement MouseDown de tous les autres contrôles sur le formulaire (comme les panneaux et le formulaire lui-même) et en appelant simplement la méthode Focus d'une étiquette aléatoire pour supprimer le focus de NumericUpDown. Toutefois, cela ne peut pas être appliqué aux éléments de menu ou aux barres de défilement.

Il doit y avoir une meilleure façon de procéder. L'utilisateur peut vouloir faire défiler le panneau à la place de NumericUpDown et cliquer intuitivement sur le panneau, puis utiliser la molette de défilement, mais actuellement cela ferait défiler le NumericUpDown à la place, car il a toujours le focus.

Merci d'avoir lu.

Éditer: Problème non résolu.

Répondre

1

Normalement, le contrôle de panneau est un contrôle non focalisable. Par conséquent, cliquer sur le panneau ne supprimera pas le focus de TextBox ou de NumericUpDown Countrol. La solution de contournement peut être, placer un bouton sur le panneau et l'éloigner de la vue, par exemple en définissant ses x = -100 et y = -100. Ne PAS définir visible = faux.

Maintenant, lorsque l'utilisateur clique sur Panneau (événement Panel_Click), activez le focus (Button.Focus()) sur ce bouton. De cette façon, le panneau défilera à travers la molette de défilement.

0

Enfermez la boîte numérique dans un panneau quelconque, puis faire

panel1.MouseHover += new EventHandler(panel1_MouseHover); 

private void panel1_MouseHover(object sender, EventArgs e) 
     { 
      if (numericUpDown1.Focused) 
      { 
       panel1.Focus(); 
      } 
     } 

Je l'ai testé et il fonctionne.!

+0

Je ne suis pas sûr de savoir comment cela aide vraiment? Peut-être qu'il me manque quelque chose mais je veux en quelque sorte le contraire. Si la souris clique n'importe où ailleurs sur l'écran, NumericUpDown devrait devenir flou. –

+0

oui c'est ce qu'il fait, quand vous vous éloignez de la zone de texte numérique, il perd le focus, vous pouvez même changer le sur le vol stationnaire pour cliquer ou quelque chose, mais il fait ce que vous voulez. Je ne sais pas comment cela ne vous aide pas – swordfish

+0

Si NumericUpDown est sélectionné, puis cliquez sur un panneau ou une étiquette par exemple, NumericUpDown est toujours sélectionné. Je ne suis pas sûr de ce que votre code résout mais le problème existe toujours. –

Questions connexes