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 :

Associer label à textbox(autosuggest)


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut Associer label à textbox(autosuggest)
    Bonjour à tous,

    Dans un de mes forms, j'ai 3 textbox qui, dès la saisie d'un caractère, propose les choix disponible dans une bdd access. Le code est le suivant :

    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub Formlots_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     
            nomlot.AutoCompleteMode = AutoCompleteMode.Suggest
            nomlot.AutoCompleteSource = AutoCompleteSource.CustomSource
            nomlot1.AutoCompleteMode = AutoCompleteMode.Suggest
            nomlot1.AutoCompleteSource = AutoCompleteSource.CustomSource
            nomlot2.AutoCompleteMode = AutoCompleteMode.Suggest
            nomlot2.AutoCompleteSource = AutoCompleteSource.CustomSource
     
            Call connection7()
     
            Dim Cmd As OleDbCommand
            Dim Dr As OleDbDataReader
            Dim Cn As New OleDbConnection(base1 & base9)
     
            Try
                Cmd = New OleDbCommand("Select Abrev, Libelle from Villes", Cn)
                Cn.Open()
                Dr = Cmd.ExecuteReader
                While Dr.Read
                    nomlot.AutoCompleteCustomSource.Add(Dr.GetString(0))
                    nomlot1.AutoCompleteCustomSource.Add(Dr.GetString(0))
                    nomlot2.AutoCompleteCustomSource.Add(Dr.GetString(0))
                End While
                Dr.Close()
                Cn.Close()
            Catch ex As Exception
                MsgBox(Err.Description)
            End Try
        End Sub
    Dans ma BDD, j'ai une autre colonne intitulée Libelle.
    J'aimerais que lorsque l'utilisateur se promène dans la liste de choix qui apparait dans le textbox, corresponde à côté sous la forme d'un label l'équivalent que j'ai dans ma colonne Libelle.
    Merci pour votre aide

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un usercontrol
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Hello Pol63,

    Usercontrom ? connais pas ....

    J'ai un peu regardé :certains parlent d'une dll, d'autres de mettre dans le projet, etc ....
    C'est dur à mettre en place car j'ai jamais fait celà ?

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Une solution simple consiste à mettre dans les éléments de la liste AutoCompleteCustomSource Abbrev +":"+Libelle au lieu de simplement "Abbrev" et lors de l'exploitation de la valeur du TextBox, on décompose le texte de la TextBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nomlot.AutoCompleteCustomSource.Add(Dr.GetString(0) & ":" & Dr.GetString(1))
    ...
    Abbrev= myTextBox.Text.Split(':')[0] 
    Libelle = (myTextBox.Text+":").Split(':')[1]
    Par ailleurs, on peut créer un seul "New List(Of String)" et l'utiliser comme AutoCompleteDataSource pour les 3 TextBox.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Hello,

    J'ai essayé ta suggestion. J'ai juste un soucis avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Abbrev= myTextBox.Text.Split(':')[0]
    En Vbnet çà donne normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Abbrev= nomlot.Text.Split(":",0)
    Le soucis est que je dois affecter ce que tu as mis comme abbrev à un textbox d'un autre Form. J'ai essayé ceci pour ne prendre que ce qui est avant les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formrecap.textbox1.text = nomlot.Text.Split(":",0)
    Et j'obtiens ceci :
    L'argument qui correspond au paramètre 'separator' passe de 'String' à 'Tableau à 1 dimension(s) de Char'.
    Merci pour ton aide

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re,

    Merci pour la suggestion.

    Après de multiples recherches, j'ai compris

    J'ai fais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strSplit() As String
    strSplit = Split(nomlot.Text, ":")
    Formrecap.textbox1.Text = strSplit(0)
    J'ai pas réussi à faire + court, voir mettre cela sur une seule ligne directement pour affecter la valeur au textbox1.

    C'est possible ?

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il suffit pourtant d'identifier chaque chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim a
    a = f
    b = a(0)
     
    '=>
     
    b = f(0)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut Pol63,

    Je suis d'accord avec toi . Pour toi c'est peut-être évident. Mais moi je découvre beaucoup de choses grâce à ce forum et vous tous : )
    Et vous m'avez déjà apporté beaucoup de choses. Mais tout n'est pas évident pour moi .
    Je classe ce topic comme résolu. Vous m'avez orienté sur une nouvelle voie que j'ai exploité avec succès mais avec un peu de mal quand même.

    Merci encore et a bientôt

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Rebonjour à tous,

    Après quelques jours de tests, je reviens vers vous pour poser une dernière question :

    Lorsque l'utilisateur fait son choix dans la liste qui apparait dans le textbox, tout le contenu du textbox reste à ce moment en sélectionné (fond bleu)

    J'aimerais gérer l"évènement lorsque la personne a choisi pour ensuite l'orienter directement vers un bouton avec le .select()

    Quel évènement je dois gérer ?
    Merci pour votre aide

  10. #10
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    On utilisera l'event TextChanged dans lequel on vérifiera qu'il y a une et une seule valeur correspondant au Text de la TextBox.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut Graffito,

    J'ai essayé l'évènement textchange de la textbox en testant par exemple que s'il y a + de 5 caractères, je fais mon bouton.select().
    Mais alors, la suggestion comme faite dans mon code + haut ne marche plus ....

    on vérifiera qu'il y a une et une seule valeur correspondant au Text de la TextBox.
    Tu peux un peu m'en dire + ? Merci d'avance

  12. #12
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Parmi ces 3 possibilités sur le TextChanged :
    1) le text ne correspond à aucun élément du DataSource,
    2) le text correspond à plusieurs éléments du DataSource,
    3) le texte correspond à un seul élément du DataSource.

    Seul le cas 3) déclenchera une action.

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut,

    Tu m'excusera mais je saisis pas tout ....
    Dans mon formload, pour l'autosuggest, je n'utilise pas de datasource.
    Je dois tester l'AutoCompleteSource ?
    Si oui de quelle manière ? car j'ai jamais fait cela auparavant.
    Merci pour ta future aide

  14. #14
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    "DataSource" = AutocompleteSource.
    Je dois tester l'AutoCompleteSource ?Si oui de quelle manière ?
    Il s'agit simplement de vérifier à quels éléments de L'AutoCompleteSource pourraient correspondre nomlotX.TextBox.Text.

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Resalut,

    Merci pour ta réponse. Concernant mon projet, la suggestion que je fais n'est pas restrictive. C'est à dire qu'il peut saisir autre chose s'il ne trouve pas son bonheur dans la suggestion.

    Je pensais qu'on pouvait simplement faire en sorte que s'il clique sur une des lignes suggérés, le contenu du textbox ne reste pas entièrement sélectionné (fond bleu) , mais que juste le curseur se placerait après le dernier caractère. Celà permettrait peut-être d'avoir le contenu du textbox qui ne serait pas sélectionné.

  16. #16
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Rebonjour à tous,

    Bon ben j'ai pas encore réussi à faire ce que je veux faire pour éviter que le contenu de mon textbox reste en sélectionné (en bleu)....

  17. #17
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Si j'ai bien compris, tu veux juste que une fois le texte rempli et sélectionné en bleu, le curseur se place à la fin du texte ?

    Si oui, alors après le chargement de la textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TaTxtBox.Select(TaTxtBox.Text.Length, 0)
    Si non ... J'ai mal compris.

  18. #18
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut,

    En fait, après le choix dans la suggestion, le contenu de la textbox reste en bleu (sélectionné). Moi je veux que le contenu ne soit plus sélectionné.

  19. #19
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Tu peux tester le KeyPress de la textbox, s'il vaut 13, l'user a tapé sur "Entrée", et également penser à tester le double click. Selon l'un ou l'autre, si le test est validé, tu donnes le focus à ton control suivant, ou comme ça t'arrange?

  20. #20
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re, voici à l'état actuel le contenu concernant ma textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub nomlot_TextChanged(sender As System.Object, e As System.EventArgs) Handles nomlot.TextChanged
            Dim currstart As Integer
            ' Get the current position of the cursor.
            currstart = nomlot.SelectionStart
            ' Change the text to capitals.
            nomlot.Text = UCase(nomlot.Text)
            ' Reset the cursor position.
            nomlot.SelectionStart = currstart
    End Sub
    Je ne mets uniquement tout en majuscules. Je ne gère pas la touche "Entrée" car les gens cliquent directement sur le bouton valider.
    Je ne sais pas trop quoi changer pour empêcher que ma textbox soit en mode sélectionné.... J'ai cherché sur google. Tout le monde veut sélectionner le contenu de son textbox mais moi, je veux faire le contraire.

Discussions similaires

  1. VBA Word - Calendar associé à une textbox
    Par vbword dans le forum VBA Word
    Réponses: 11
    Dernier message: 02/11/2008, 13h49
  2. associer des textbox à un element d'une combobox
    Par julien10 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/10/2008, 22h32
  3. Associer un textbox à une table (en vue d'une insertion)
    Par supertoms dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/04/2008, 11h49
  4. code SQL associé à une TextBox
    Par ac264 dans le forum IHM
    Réponses: 2
    Dernier message: 01/10/2007, 13h55
  5. [VBA-E] relation label / textbox
    Par comanche dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2007, 23h35

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