Bonjour,
je suis novice en programmation et aussi en VB. Je souhaite réaliser une appli sous visual studio et en je voudrai une seule fenêtre avec des panels (sous forme de groupbox) qui changent.
Déjà ma première question c'est est une bonne solution ou y en a t il d'autre plus simple.
Sinon j'ai commencé le panel client (formulaire classique : nom, prénom,...., ajouter,modifier,....) et déjà plusieurs soucis.
La création facile mais dès que je commence à vouloir tripoter les textboxs ça fait des vagues.
la saisie semi-auto est le plus grand problème. je veux plus tard le relier à une BD mais en attendant j'ai fais une petite liste de seulement 10 noms et c'est le drame.
ça fonctionne mais pas toujours et là ça plante. j'ai l'impression que lorsque l'on saisie trop vite ou que l'on reste appuyer sur une touche (comme pour effacer), la mémoire se met en branle.
Pour y remédier j'ai placé des DoEvents() mais ça ne fait que retarder le problème. D’ailleurs des fois un simple clic sur une touche fait planter. Et puis quoi qu'il en soit c’est loin d'être fluide à l'affichage: quand j'écrit dans une textbox toute les textboxs avec autocompletemode scintillent.
Après ce long discourt je vous met qu'une partie du 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
24
25
26
27
28
29
30
 
Public Class PanelClient : Inherits GroupBox
 
''dans le constructeur new
  'initialiser controle
        LbNom = New Label()
        LbNom.Text = "Nom"
        LbNom.Dock = DockStyle.Left
        LbNom.AutoSize = True
        TbNom = New TextBox()
        TbNom.Dock = DockStyle.Left
        TbNom.Size = New Size(150, 10)
        TbNom.Text = " "                              'ici ça commence les bidouilles car ça ne voulais pas faire la saisi semi-auto dès le premier caractère frappé
        AddHandler TbNom.TextChanged, AddressOf TbNom_TextChanged
        TbNom.Clear()                                 'du coup ici je "shunte" la bidouille
 
 'action sur textbox
    Private Sub TbNom_TextChanged(o As Object, s As EventArgs)
 
        Call Flistetbox()
        System.Windows.Forms.Application.DoEvents()                  'les fameux DoEvents()
        source.AddRange(listeTbox)
        System.Windows.Forms.Application.DoEvents()
        With TbNom
            .AutoCompleteCustomSource = source
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.CustomSource
        End With
 
    End Sub
et ma liste qui sera remplacer par la base de données

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Module Liste
 
    Public listeTbox(10) As String
 
    Sub Flistetbox()
        listeTbox = {"paul", "pierre", "jean", "pilou", "julien", "julie", "eric", "lolo", "thols", "xuan"}
 
    End Sub
 
 
 
 
End Module
Après je suis preneur des conseils, merci d'avance.
PS je vous lis souvent