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. #21
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Dans le doute, quand tu dis "mode sélectionné", c'est à dire texte surligné en bleu ou la TxtBox qui a le focus ?

    Ceci t'aide-t-il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) _  
            Handles TextBox1.GotFocus  
     
            TextBox1.SelectionStart = TextBox1.Text.Length  
        End Sub
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  2. #22
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Salut,

    Dès que la personne clique par exemple sur la suggestion qui apparait en fonction de la lettre tapée et qu'il clique sur ce qu'il veut, on revient bien à la textbox mais le texte est "sélectionné". C'est à dire c'est comme si sous word tu sélectionnes un mot avec ta souris, le fond est bleu.
    Et moi l'idéal serait que si dans les suggestions qui apparaissent, il clique sur l'une d'elles, que je puisse faire mon bouton.select()

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

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Et si dans l'event TextChanged, tu testes que la valeur changé corresponde à une des proposition de l'autoSuggest, si c'est le cas, c'est bien qu'il a sélectionné un choix, et donc dans le cas d'un test positif, tu donnes le focus à ton bouton ? (Bttn1.Focus())
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  4. #24
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Oui depuis un moment on m'avait fait cette suggestion mais je ne sais pas comment faire

  5. #25
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Citation Envoyé par Graffito Voir le message
    ...
    Par ailleurs, on peut créer un seul "New List(Of String)" et l'utiliser comme AutoCompleteDataSource pour les 3 TextBox.
    La solution est là ensuite sur l'évènement nomlot_TextChanged tu testes si la liste contient (contains) le contenu du TextBox, si oui focus sur le bouton valider.

    Ce qui donne quelque chose ressemblant à ceci. (à adapter à ton besoin)
    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
    'déclaration
    Dim ListeNomLot As New List(Of String) 
     
    ' méthodes
    '...
                Cmd = New OleDbCommand("Select Abrev, Libelle from Villes", Cn)
                Cn.Open()
                Dr = Cmd.ExecuteReader
    ' remplissage liste
                While Dr.Read
        ListeNomLot.Add(Dr.GetString(0).ToUpper & ":" & Dr.GetString(1).ToUpper) ' en majuscule puisque tu transformes la saisie en majuscule.
    '...
     
    ' affecter la liste à ta saisie semi-automatique.
     
    ' suivi saisie
    Private Sub nomlot_TextChanged(sender As System.Object, e As System.EventArgs) Handles nomlot.TextChanged
    '...
    if ListeNomLot.Contains(NomLot.text) then
    '... bouton.focus
    Reste à tester, qu'une saisie manuelle ne corresponde pas à une ville et une autre partielle. Ex :
    AND:ANDANCE
    AND:ANDANCETTE
    ANDANCE sera systèmatiquement validé avant que l'utilisateur est pu saisir la reste (TTE) sauf s'il clique sur la liste auquel cas : OK. (possibilité de différencier par l'abr. mais le risque existe)


    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #26
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Bonjour IL-MAFIOSO
    Ton ideal est peut etre dans l'event TextBox_ModifiedChanged qui se produit quand la prop Text finale est modifiee,si j'ai bien compris le souci....
    Des que l'user clique sur le text autosuggeste tu encleche l'event button_click....
    voici le code:
    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
     
    'ajoute :
    '-un textbox
    '-un buton
    '-un listbox
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            ListBox1.DataSource = TextBox1.AutoCompleteCustomSource
            TextBox1.Clear()
        End Sub
     
        Private Sub TextBox1_ModifiedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.ModifiedChanged
            If TextBox1.Text.Length = 0 Then Return
            If TextBox1.Text.Length > 0 And TextBox1.AutoCompleteCustomSource.Contains(TextBox1.Text) Then
                Button1_Click(Me, e)
            End If
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MessageBox.Show("ok  str:" + TextBox1.Text)
        End Sub
     
    End Class
    en esperant qu'il reponde au souci
    bon code.............

  7. #27
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    je ne suis pas sur d'avoir bien compris votre problématique, peut être que ce bout de code peut vous servir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'AutoCompleteMode sur Suggest
    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        If TextBox1.AutoCompleteCustomSource.Contains(TextBox1.Text) = True Then
            Button1.Select()
        End If
    End Sub
    Si l'utilisateur saisit quelque chose qui correspond à une valeur de l'AutoCompleteSource, le focus est passé au bouton, sinon, il continue à saisir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
     
        Dim _Result = From el As String In TextBox1.AutoCompleteCustomSource
                     Select el Where el Like TextBox1.Text.ToString & "*"
     
        If _Result.Count = 1 Then
            TextBox1.Text = _Result.First.ToString
            Button1.Select()
        End If
     
    End Sub
    Permet de faire la différence entre des mots proches (ex: Client <> Clients)
    Si la requête Linq retourne plus d'un enregistrement c'est que l'utilisateur peut continuer à saisir pour faire un autre mot commençant par ce qu'il a déjà saisit.

    Le seul truc, c'est que ça ne fait pas la différence entre les majuscules et minuscules.

    EDIT: Il faut rajouter en début de classe :
    pour que les majuscules et minuscules soit prise en charge.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  8. #28
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Hello,

    merci pour vos suggestions.

    Permet de faire la différence entre des mots proches (ex: Client <> Clients)
    Si la requête Linq retourne plus d'un enregistrement c'est que l'utilisateur peut continuer à saisir pour faire un autre mot commençant par ce qu'il a déjà saisit.
    Oui certa
    concernant celle de Rainu, j'ai une erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim _Result = From el As String In TextBox1.AutoCompleteCustomSource
    L'expression de type 'System.Windows.Forms.AutocompleteStringCollection' ne peut pas être intérrogée . Vérifiez que vous n'omettez pas une référence d'assembly et/ou une importation d'espace de noms pour le fournisseur Linq

  9. #29
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonsoir,
    L'expression de type 'System.Windows.Forms.AutocompleteStringCollection' ne peut pas être intérrogée . Vérifiez que vous n'omettez pas une référence d'assembly et/ou une importation d'espace de noms pour le fournisseur Linq
    La réponse est là

    Ajoutez comme référence System.Linq et ça marchera beaucoup mieux
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  10. #30
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Re,

    Je dois le rajouter dans mon projet ou avant le public class de ma form ?
    Sachant que mon projet est en framework 2, je le trouve ou ?

  11. #31
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonsoir,

    Double click sur My Project, Références et en bas il y a "Espaces de noms importés" cochez System.Linq.

    Bon dev.

    EDIT : je crois que Linq est dispo qu'à partir du 3.5
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  12. #32
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    J'ai regardé et je ne l'ai pas.
    J'ai System.IO.Ports puis çà passe à System.Media

  13. #33
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Je viens de voir ton Edit. Malheureusement je ne peux pas passer à une autre version de Framework..... Tu as une variante pour le framework 2 ?

  14. #34
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonsoir,

    Essayez en remplaçant le code par celui-ci :
    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
     
    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
     
        Dim lst As New List(Of String)
     
        For Each Str As String In TextBox1.AutoCompleteCustomSource
            If Str Like TextBox1.Text & "*" Then
                lst.Add(Str)
            End If
        Next
     
        If lst.Count = 1 Then
            TextBox1.Text = lst.First.ToString
            Button1.Select()
        End If
     
    End Sub
    EDIT : j'ai enlevé "Dim _Count as integer" ça servait à rien.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  15. #35
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Une petite erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text = lst.First.ToString
    First n'est pas un membre de 'System.Collections.Generic.List(Of String)

  16. #36
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    C'est sympa de bosser sur un vieux framework

    Regardez si avec ça fonctionne.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  17. #37
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    çà à l'air de fonctionner

    J'ai laissé au début le petit bout de code pour que ce soit toujours des majuscules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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
    En gros ton code vérifie si ce qui a été sélectionné et qui se retrouve dans la textbox correspond bien à un élément de l'AutoCompleteCustomSource.
    Si oui il l'intègre dans la lst et on récupère le 1er item ? Ai-je bien compris ? ou bien il y a une subtilité ou un truc que j'ai pas trop saisi ?

    PS: Je sens que ce soir j'irais me couché moins bête

  18. #38
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    En gros c'est ça.

    L'utilisateur à le choix entre deux modes de saisie, soit il clique dans la zone déroulante et du coup le texte est forcément quelque chose de la liste auquel cas, le code s'exécute directement.

    Soit l'utilisateur continue de remplir la textbox et le code cherche dans la liste quelque chose qui correspond. Dès qu'il ne trouve qu'une seule correspondance, il met le texte trouvé dans la textbox et passe le focus au contrôle suivant.

    Ce code n'aurait aucun intérêt s'il ne prenait pas en charge les deux modes de saisie
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  19. #39
    Membre régulier
    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
    Points : 98
    Points
    98
    Par défaut
    Merci pour toutes ces précisions et cette belle leçon.
    Je vais classer ce topic comme résolu.
    Je remercie aussi les autres intervenants pour leurs propositions et le temps qu'ils m'ont accordé.

    Merci encore pour tout

  20. #40
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonne soirée.

    PS : Pense dans tes posts à préciser que tu es sous le framework 2
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

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