Saisie Semi-Automatique dans un textbox en vb.net

Résolu
jabranekarima - 24 mai 2013 à 13:22
 jabranekarima - 27 juin 2013 à 18:12
Bonjour,
J'ai un textBox auquel je veux appliquer la saisie semi-automatique dont la source est tout ce qui est déjà tappé dans ce champ, j'ai affecter à AutoCompleteMode=SaggestAppend et à AutoCompletSource=HistoryList. Mais ça marche pas Par contre si j'utilise AutoCompleteSource=CustomSource et je remplis AutoCompleteCustomSource par une liste de mots ça marche très bien.

Merci de m'aider

16 réponses

Utilisateur anonyme
24 mai 2013 à 17:57
j'espère qu'elle n'est pas cassée

Mais si, justement sinon j'aurais deviné ce que tu voulais faire...

Essaie donc ce code (malgré les centaines d'exemples sur le site):
Public Class Form1
    Dim MySource As New AutoCompleteStringCollection()

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim Str(0) As String
        For Each Ligne In MySource
            Str(Str.GetUpperBound(0)) = Ligne
            ReDim Preserve Str(Str.GetUpperBound(0) + 1)
        Next
        System.IO.File.WriteAllLines("c:\users" & Environment.UserName.ToString & "\desktop\AutoCompleteSource.txt", Str)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim Str() As String = System.IO.File.ReadAllLines("c:\users" & Environment.UserName.ToString & "\desktop\AutoCompleteSource.txt")
            For Each Ligne In Str
                MySource.Add(Ligne.ToString)
            Next
            TextBox1.AutoCompleteCustomSource = MySource
        Catch ex As Exception
        End Try

        TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
        TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
    End Sub

    Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        If e.KeyCode = Keys.Enter Then
            MySource.Add(TextBox1.Text)
            TextBox1.AutoCompleteCustomSource = MySource
            TextBox1.Clear()
        End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub
End Class


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
Utilisateur anonyme
24 mai 2013 à 14:57
Bonjour,
la source est tout ce qui est déjà tappé dans ce champ

Quel champ? le textbox? multiline donc?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jabranekarima
24 mai 2013 à 15:10
le champ est le textbox et n'est pas multiligne
0
Utilisateur anonyme
24 mai 2013 à 15:20
Je ne comprends pas bien dans ce cas;
Tu veux suggérer la saisie du même texte qui est en cours de rédaction ???

Il ne peut être autre que la saisie déjà rédigée.
A moins d'avoir une boule de cristal pour deviner quel est/sont le(s) mot(s) qu'il doit suggérer...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jabranekarima
24 mai 2013 à 15:56
par exemple si je tape un nom commençant par la lettre "k" , apparaît une liste de mots suggérés qui sont des mots déjà tapés dans ce champ sinon on ajoute le nouveau nom saisi à la liste
0
Utilisateur anonyme
24 mai 2013 à 16:52
Teste ce exemple, tu renseignes le textbox puis appuie sur entrée, regarde si ça te dit quelque chose car j'ai peur de ne pas avoir bien compris....

Public Class Form1
Dim MySource As New AutoCompleteStringCollection()

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
        TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
    End Sub

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        If e.KeyCode = Keys.Enter Then
            MySource.Add(TextBox1.Text)
            TextBox1.AutoCompleteCustomSource = MySource
        End If
        TextBox1.Clear()
    End Sub
End Class



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
24 mai 2013 à 16:54
Pardon,
le "clear" de la textbox doit être dans le if/end if
  Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        If e.KeyCode = Keys.Enter Then
            MySource.Add(TextBox1.Text)
            TextBox1.AutoCompleteCustomSource = MySource
            TextBox1.Clear()
        End If



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jabranekarima
24 mai 2013 à 17:09
Merci pour votre aide , mais j'ai déjà essayé ce code ça marche très bien mais quand je redémarre l'application je perd l'ancien historique du champ.
0
Utilisateur anonyme
24 mai 2013 à 17:14
Bien sur que tu le perds !!!

Et je dois le deviner, que tu veux garder l'historique ???

Tu ne vas pas y croire, mon chat est monté sur la table et a fait tomber ma boule de cristal par terre... encore une fois...

Tu devrais donc enregistrer l'historique dans un fichier par exemple...
Et à chaque démarrage tu charges le fichier.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jabranekarima
24 mai 2013 à 17:18
ooh non j'espère qu'elle n'est pas cassée ^^ , oui je veux garder l'historique si possible :) , mais je sais pas comment faire avec un fichier,
0
jabranekarima
24 mai 2013 à 18:09
Oui ça Marche Merci Infiniment.
0
Utilisateur anonyme
24 mai 2013 à 19:22
Oui... alors, sans fichier qui s'enregistre:

- Double-clique sur my project (dans l'explorateur de solutions)
- Onglet paramètre (à gauche)
- Dans le Nom tu mets AutoCompListe , tu laisses le reste comme c'est

Puis tu fais ça:

Public Class Form1
    Dim MySource As New AutoCompleteStringCollection()

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim Str(0) As String
        For Each Ligne In MySource
            Str(Str.GetUpperBound(0)) = Ligne
            ReDim Preserve Str(Str.GetUpperBound(0) + 1)
        Next
        My.Settings.AutoCompListe = String.Join(";", Str)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Str() As String
        Str = My.Settings.AutoCompListe.Split(";")
        For Each Mot In Str
            MySource.Add(Mot)
        Next
        TextBox1.AutoCompleteCustomSource = MySource
        TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
        TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
    End Sub

    Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        If e.KeyCode = Keys.Enter Then
            MySource.Add(TextBox1.Text)
            TextBox1.AutoCompleteCustomSource = MySource
            TextBox1.Clear()
        End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub
End Class


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jabranekarima
27 juin 2013 à 15:10
Bonjour,
Merci de m'expliquer de quel Onglet paramètre parlez-vous et de quel nom .
Cordialement
0
Utilisateur anonyme
27 juin 2013 à 17:16
Bonjour,

mais je sais pas comment faire avec un fichier,



C'est expliqué, et avec des exemples, dans l'aide. Juste à écrire fichier texte dans la petite case du texte à rechercher.

Et puis le http://www.vbfrance.com/reglement.aspx dit que tu dois produire ton code.
0
Utilisateur anonyme
27 juin 2013 à 17:18
Bonjour,

- Double-clique sur my project (dans l'explorateur de solutions)
- Onglet paramètre (à gauche)
- On va créer un nouvel paramètre qui s'appelle 'AutoCompListe'
- Dans le Nom tu mets AutoCompListe , tu laisses le reste comme c'est


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
jabranekarima
27 juin 2013 à 18:12
Acive qui me sauve toujours Merci beaucoup pour votre aide , ça marche maintenant.
0
Rejoignez-nous