Correction programme et bug
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:
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:
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