Bonjour à toutes et tous
Je suis novice en vb.net et plus largement en programmation (juste un peu de vba et de developpement web)
J'utilise depuis quelque temps visual basic express pour me familiariser un peu avec ce langage et je me suis lancé dans la programmation d'une petite calculatrice basique, idée hautement originale, je vous l'accorde.
Elle est naturellement composée d'une textbox et de x boutons pour les chiffres et les opérations */-+= C +/- ⇦
Le fonctionnement par clic ne pose pas de difficulté, pas plus que le formatage de l'affichage.
La simulation des clics par appui de touches du clavier numérique fonctionne également dès lancement du programme.
Néanmoins, dès que j'utilise la calculatrice au moyen de clics et non plus par le clavier, le dernier bouton cliqué reste sélectionné de sorte que:
- l'appui de la touche "Enter" a pour effet de répéter la saisie de la dernière valeur cliquée
- et surtout abouti à ce que plus aucun appui d'autres touches du clavier ne fonctionne, le focus étant resté sur la dernier bouton cliqué
J'avais cru comprendre de mes lectures que le keypreview en true était la solution à mon problème mais que néni.
Donner le focus à un panel ou autre chose ne permet pas non plus de faire fonctionner les appuis clavier.
J'utilise donc minablement de multiples SendKeys.Send("{TAB}") pour chacune des procédures des boutons cliqués jusqu'à ce qu'aucun bouton de ma form n'ait le focus. Alors les appuis clavier refonctionnent.
Ma question est donc la suivante : comment peut-on enlever le focus d'un bouton cliqué sans passer par une sélection d'un autre élément ?
Un peu de code pour éclairer ma question :
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If instruct = "=" Then term1 = "" instruct = "" End If If oper = 0 Then term1 = term1 & 1 TextBox1.Text = term1 Else term2 = term2 & 1 TextBox1.Text = term1 & instruct & term2 End If End Sub Private Sub Button1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button0.KeyUp If (e.KeyCode = Keys.NumPad1) Then Button1_Click(sender, e) End If End Sub
Merci d'avance pour votre aide et toutes mes excuses si mes lacunes m'ont conduit à poser une question stupide.
n.
Partager