IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages Discussion :

Supprimer focus d'un bouton windows form [Débutant]


Sujet :

Langages

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut Supprimer focus d'un bouton windows form
    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.

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bonjour

    Merci (désolé je n'ai pas reçu de notification de réponse à priori) mais je n'ai pas trouvé de réponse à mon problème dans le lien

    Il semble qu'il n'y ait pas d'autre possibilité de supprimer un focus sur un élément autre que de le mettre sur un autre élément ce qui dans mon cas empêche la simulation de click

    J'ai contourné ce problème par une solution pas très propre consistant à faire à l'issu de chaque procédure de click sur un bouton (j'ai 20 boutons ) un select de l'élément ayant le dernier index de tabindex puis de faire un sendkeys tab de sorte que cela a pour effet d'enlever le focus de l'élément sans pour autant l'attribuer à un autre élement du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Button18.Select() //mon élément ayant l index le plus élevé(pour éviter d'avoir des chapelets de sendkeys pour les boutons dont l'index est petit)
            SendKeys.Send("{TAB}")

    J'aurai peut être du dupliquer pour chacune des procédures d'appuis de touche le contenu de la procédure de click correspondant à chacune de ces touches au lieu de simuler le click

    +++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] WPF window form avec des boutons de réduire et fermeture
    Par midou256 dans le forum C#
    Réponses: 2
    Dernier message: 29/04/2013, 20h20
  2. WPF window form avec des boutons de réduire et fermeture
    Par midou256 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 18/04/2013, 21h12
  3. [Débutant] PIng with a bouton windows form
    Par djdidi2010 dans le forum C#
    Réponses: 1
    Dernier message: 17/01/2013, 13h40
  4. Comment changer un bouton "next" en "finish" dans un window form ?
    Par Battosaiii dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/10/2008, 13h11
  5. [C# 2.0] Savoir si une Windows.Form obtient / perd le focus
    Par nicolas.pied dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/05/2007, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo