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

Windows Forms Discussion :

[vb 2005] Quitter un GotFocus ?


Sujet :

Windows Forms

  1. #1
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut [vb 2005] Quitter un GotFocus ?
    Bonjour à tous et toutes !

    J'ai un petit soucis dans un panel d'encodage de données.
    ^J'ai divers contrôles dont certains textbox qui sont remplis par un choix dans une listbox. Jusque là, c'est simple sauf que ma listbox se trouve sur une petite fenêtre qui s'ouvre quand le textbox reçoit le focus.
    J'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub txtType_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtType.GotFocus
            Dim frmTyp As New frmTypes
     
            frmTyp.ShowDialog()
     
        End Sub
    Dans cette feuille, je remplis la textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub lstExamen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstExamen.SelectedIndexChanged
     
            frmEncodage.txtType.Text = lstExamen.SelectedItem.ToString
            Me.Close()
     
     
        End Sub
    La textbox est bien remplie mais je ne sors plus de ma fenêtre frmType. En effet, le GotFocus se "refait" et réaffiche ma fenêtre.

    J'ai cherché tout ce qui concerne gotfocus sur le forum mais rien vu. Cela doit être tellement simple et évident que je n'y arrive pas

    Merci
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Il est normal que la fenetre reste ouverte car ta textbox possède toujours le focus.
    Tu as le choix entre selectionner un autre control après remplissage du textbox, soit utiliser un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub txtType_Click
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub txtType_GotFocus
    J'espere que ca t'aidera

  3. #3
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Donner le focus à un autre contrôle ne fonctionne pas car le gotfocus se "refait" dès le retour sur ma page principale. J'ai tenté de forcer le focus sur mon textbox suivant mais rien n'y fait, le GotFocus reste actif !
    Je n'arrive pas à forcer un LostFocus du textbox.

    L'événement _Click ne m'est d'aucun secours car il n'est pas déclenché lors du passage via 'Tab' (tabindex) d'un textbox à l'autre
    Ou alors, il faut que je le déclenche moi-même ce qui devient idiot vu les outils événementiels à la disposition !

    Merci pour tes suggestions
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 95
    Points
    95
    Par défaut
    Un truc que je vois c'est l'evenement keypress.

    En effet, je l'ai beaucoup utiliser pour bloquer des touches de clavier.
    Il suffit par exemple que tu te place sur l'evenement keypress de ta première textbox et ensuite que tu test si le caractère envoyé est un Tab et ainsi tu peut mettre dedans le lancement de ta form de selection.
    Avec ca, tu peux utiliser l'evenement de Click sur textbox.

    Tu peux aussi utiliser l'evenement keyup.
    Le KeyUp se fait après que la touche ai été effectuer.
    Le KeyPress se fait juste après que la touche ai été enfoncé et donc elle n'a pas encore été traité.

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux utiliser un booléen flip-flop que tu modifies dans la fenêtre et dans le gotfocus
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub GotFocus(...)
        If flipflop = True Then
           Afficher()
        Else 
            flipflop = True
        End If   
    End Sub
     
    Sub Afficher()
        ShowDialog()
     
        flipflop = False
    End Sub
    Excuse mon VB.NET miteux
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 95
    Points
    95
    Par défaut
    J'y avait déjà pensé aussi mais le problème c'est que une fois ce gotfocus effectuer, il ne pourra plus etre jamais effectué. car le boolean ne sera pas réinitialisé .

  7. #7
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Ce sont toutes des solutions applicables et j'ai bien "flipflopé" de rire
    Je t'assure que le prochain flag que je dois mettre quelque part, je l'appelle "flipflop" pour me souvenir de toi

    Tout cela revient plus au moins au même que tester si mon textbox est vide. Donc, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub txtType_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtType.GotFocus
            Dim frmTyp As New frmTypes
     
            If Me.txtType.Text = "" Then
                frmTyp.ShowDialog()
            Else
                Me.txtMatiere1.Focus()
            End If
     
        End Sub
    et si l'utilisateur doit corriger son encodage, là, je passe par le _Click.
    Tester du Key ou faire les 2 événements n'engendre pas de différence au niveau du temps d'exécution

    Par contre, j'ai un autre souci si ma Listbox est liée à un champ de BD.
    Je pars du même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub txtMatiere1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtMatiere1.GotFocus
     
            If Me.txtMatiere1.Text = "" Then
                frmMat.ShowDialog()
            Else
                Me.txtEnseig1.Focus()
            End If
        End Sub
    J'ai initialisé par propriété ma listbox au load de ma feuille principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frmMat.sqlQuery = ds   'mon dataset est ok
    Les données sont OK mais il me met directement quelque chose dans mon textbox
    Il affiche : System.Data.DataRowView
    et j'ai beau sélectionner dans ma listbox, rien à faire ! Là, je comprends pas trop
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Points : 95
    Points
    95
    Par défaut
    tu pourrais mettre le code tu remplissage du textbox stp ?

    Ca m'est déjà arrivé

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Normalement, tu as un BindingSource pour le listbox, sinon tu dois en ajouter un. Tu as un dataset typé ?
    Tu bindes le listbox sur le bindingsource, et ensuite tu bindes le textbox sur le bindingsource.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  10. #10
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    C'est exactement le même que pour l'autre liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub lstMatieres_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstMatieres.SelectedIndexChanged
     
            frmEncodage.txtMatiere1.Text = lstMatieres.SelectedItem.ToString
     
        End Sub
    mais cela ne provient pas de là. Simplement, ma textbox se remplit à cause du lien au ds et donc, je n'ai plus le contrôle du choix dans la liste.
    Bon, je vais encore creuser


    [EDIT] Bon, j'ai fait mon boulet Juste un problème d'événement
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/03/2003, 12h22
  2. Quitter une application FLASH ?
    Par jeje.r dans le forum Flash
    Réponses: 3
    Dernier message: 25/02/2003, 14h57
  3. Impossible de quitter mon application!
    Par Bouillou dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2002, 20h43

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