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

VB.NET Discussion :

Petite question sur les textbox


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Petite question sur les textbox
    Bonjour.

    (J'ai pris l'anonymat parce que... j'ai honte [])

    J'ai un petit problème geek, et j'espère que la communauté de kraland.org pourra m'aider. Un peu, au moins.



    J'ai un petit programme à faire dans le cadre de mes études, qui consiste juste à mettre un texte dans une textbox, cliquer sur un bouton, et *pouf*, ça l'ajoute dans une listbox.

    Bon, ça, ça va.

    Là où ça se complique -pour le n00b que je suis-, c'est qu'il faut que le bouton "ajouter" soit grisé si la zone de texte est vide.

    J'ai mis le "Enabled" du bouton par défaut à "false", et sur la textbox, j'ai utilisé le keypress pour activer le bouton.
    Et quand on l'utilise : il vide la zone de texte, et repasse en false.


    Seulement !

    Il y a un petit souci avec ma solution.
    Oui : quand on tape un texte, et qu'ensuite, on l'efface (avec la touche "retour", par exemple), le bouton reste activé alors qu'il ne devrait pas.

    Je pense que ça vient du keypress, et que je dois utiliser autre chose comme évènement.
    Mais quoi? That is the question.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class Form1
     
        Private Sub ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ajouter.Click
            liste.Items.Add(texte.Text)
            texte.Text = ""
            ajouter.Enabled = False
        End Sub
     
        Private Sub texte_Keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles texte.KeyPress
            ajouter.Enabled = True
        End Sub
     
    End Class
    Que dois-je utiliser à la place du keypress ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Bon , comme tu debutes, on te pardonne.
    Tu n'es pas dans le bon forum, il en exite un spécialisé pour VB.Net, ici c'est les versions avant.

    Concernant ton probleme, je verais plutot un solution passant par l'evenement change du textbox. dans cet evenement, tu verifies si il y a du texte dans le textbox et tu valides on non ton bouton.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Oops, désolé pour le forum.

    Merci du conseil, j'ai bien testé avec le textchange, en mettant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If texte.TextLength = 0 Then ajouter.Enabled = False Else ajouter.Enabled = True
    Et c'est tout bon. A un point près.
    L'effet sur le bouton a grosso modo un caractère de retard.

    Si je tape "lion", le bouton ne s'activera qu'à la frappe du "i".

    Et si je l'efface, il ne se désactivera pas : il faudra un autre "retour" pour le désactiver.

    Y'a-t-il un moyen de passer outre cet "effet de retard"?

    Merci d'avance.

  4. #4
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Bonjour,

    Regarde du côté des événements KeyPress et/ou KeyUp et/ou KeyDown pour récupérer les touches utilisées.

    Je ne suis pas sûr des noms pour VB.net

    +

    Théo

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 301
    Par défaut
    Bien maheureu l'homme qui prétend tout connaitre car de la vie peut de chose il peut attendre....
    il ni a aucune honte à reconnaitre son manque de connaissance dans un domaine.

    En ce qui concerne ton problème je suis d'accord avec Theocourant mais malheureusement je ne pourrait pas te donner plus de détail car je ne connait pas le .Net (Et oui tu n'est pas le seul)

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Par défaut
    salut!!!
    Je me demande si tu plaisantes. Il y a une grande différence entre du vb6.0 et du vb.net. Va donc de ce côté et lis désormais avant de cliquer sur un lien.

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Citation Envoyé par valval
    salut!!!
    Je me demande si tu plaisantes. Il y a une grande différence entre du vb6.0 et du vb.net. Va donc de ce côté et lis désormais avant de cliquer sur un lien.
    Vi, ben, mollo, hein.

    C'est pas une question de mauvaise lecture d'un lien, c'est une question d'être un novice dans le sujet et de ne pas savoir que VB 2005 est antérieur à VB6.
    Quand on sait pas, c'est pas évident.

    Bon, tout fonctionne, sauf ce "retard d'une touche". Dans le doute, je vais gérer l'activation du bouton à la première modif du textbox, en espérant que l'utilisateur ne pense pas à supprimer son texte

    Merci quand même les gens.


    [EDIT]


    Finalement, j'ai récupéré la réponse dans un autre forum, et ça marche nickel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub texte_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles texte.TextChanged
    ajouter.Enabled = texte.Text.Length
    End Sub

  8. #8
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ajouter.Enabled = texte.Text.Length
    Ounch !!!! Y avait réellement ça sur ton autre forum !!??

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Citation Envoyé par Kelpan
    Ounch !!!! Y avait réellement ça sur ton autre forum !!??
    Yep, et ça marche nickel chrome.

    Où est le problème? C'est mal?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Enabled attend un Boolean et Text.Length (ou TextLength) renvoie un Integer.

    Bien que VB.NET effectue une conversion implicite (tout ce qui est différent de 0 est Vrai, 0 valant Faux), il est plus correct d'écrire ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouter.Enabled = IIf(texte.TextLength = 0, False, True)
    EDIT : ceci fonctionne aussi (c'est peut-être plus simple à utiliser )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouter.Enabled = (texte.TextLenth <> 0)

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Effectivement, je n'avais pas considéré cet aspect-ci.

    Merci beaucoup !

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

Discussions similaires

  1. Petite question sur les conventions de nommage en Java
    Par implosion dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2006, 15h54
  2. Petites question sur les onglets...
    Par jarod_bx dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 18h45
  3. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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