ListBox VisualBasic
Résolu/Fermé
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
-
16 janv. 2017 à 11:12
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 - 19 janv. 2017 à 14:19
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 - 19 janv. 2017 à 14:19
A voir également:
- ListBox VisualBasic
- Visualbasic - Télécharger - Langages
- Visualbasic editor - Télécharger - Langages
- Listbox vb6 ✓ - Forum VB / VBA
- Listbox excel ✓ - Forum VB / VBA
- Remplir listbox a partir d'une suite de cellule excel ✓ - Forum VB / VBA
5 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié par cs_Le Pivert le 16/01/2017 à 11:51
Modifié par cs_Le Pivert le 16/01/2017 à 11:51
C'est moi qui veut connaitre le langage!!!!
Pour le code il faut faire un copier -coller sur le post. On ne peut pas travailler sur des images!!!!
@+ Le Pivert
Pour le code il faut faire un copier -coller sur le post. On ne peut pas travailler sur des images!!!!
@+ Le Pivert
Utilisateur anonyme
16 janv. 2017 à 16:48
16 janv. 2017 à 16:48
Et donc le code que tu montres, ressemble fort à du Vb.net (comme l'a dit le Pivert) à supposer que tu travailles en winform ceci devrait t'aider
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listbox.itemheight?redirectedfrom=MSDN&view=netframework-4.8
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listbox.itemheight?redirectedfrom=MSDN&view=netframework-4.8
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
16 janv. 2017 à 17:42
16 janv. 2017 à 17:42
Exact c du vb.net winForm quand au cas du ItemHeight je dois le placer dans le load ?
Car si Oui alors j'ai un plus gros souci c'est que cela ne bouge strictement rien.
Merci
Cordialement
Car si Oui alors j'ai un plus gros souci c'est que cela ne bouge strictement rien.
Merci
Cordialement
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
Modifié par Programming_018 le 16/01/2017 à 17:53
Modifié par Programming_018 le 16/01/2017 à 17:53
Voilà le problème que cela me fait
J'ai écrits dans le load
LB1.DrawMode = DrawMode.OwnerDrawFixed
Attention : LB1 = ListBox1
Et pour l'actualisation de ma base j'ai écrit ceci
Private Sub Actualisation_Marque()
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
LB1.ItemHeight = 50
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Donc en résumé cela m'affiche une scrollBar vertical MAIS ne m'affiche aucune données :/
Merci
Cordialement
J'ai écrits dans le load
LB1.DrawMode = DrawMode.OwnerDrawFixed
Attention : LB1 = ListBox1
Et pour l'actualisation de ma base j'ai écrit ceci
Private Sub Actualisation_Marque()
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
LB1.ItemHeight = 50
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Donc en résumé cela m'affiche une scrollBar vertical MAIS ne m'affiche aucune données :/
Merci
Cordialement
Et si tu veux centrer le texte (avec itemHeight = 50 cette fois ci)
'valeurs par défaut Dim fond As Brush = Brushes.Beige Dim police As Font = Me.Font Dim couleurTexte As Brush = Brushes.Black ' L' item est celui 'selected' si And sur 'State' et 'DrawItemState.Selected'= true. If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then fond = Brushes.CornflowerBlue police = New Font(Me.Font, FontStyle.Bold) couleurTexte = Brushes.White End If 'centrer le texte Dim texte As String = listBox1.Items(e.Index).ToString() Dim tailleTexte As SizeF = e.Graphics.MeasureString(texte, police) Dim x As Single = e.Bounds.X + (e.Bounds.Width - tailleTexte.Width) / 2 Dim y As Single = e.Bounds.Y + (e.Bounds.Height - tailleTexte.Height) / 2 'On dessine le rectangle du fond et on écrit le texte e.Graphics.FillRectangle(fond, e.Bounds) e.Graphics.DrawString(texte, police, couleurTexte, x, y) ' Rectangle bleue autour de chaque Item. e.Graphics.DrawRectangle(Pens.Blue, New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height)) 'On diminue la largeur du rectangle de 1 pixel, sinon le coté droit n'est pas visible ' Afficher le focus rectangle . e.DrawFocusRectangle()
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
16 janv. 2017 à 11:28
16 janv. 2017 à 11:28
Bonjour,
Une solution toute simple: tu intercales une ligne vide.
Une solution toute simple: tu intercales une ligne vide.
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
16 janv. 2017 à 11:31
16 janv. 2017 à 11:31
Bonjour merci de cette précision sauf que il y à un problème c'est que les items de la listbox proviennent d'une base de donnée :/
Merci
Cordialement
Merci
Cordialement
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
16 janv. 2017 à 11:40
16 janv. 2017 à 11:40
D'abord, connaitre le langage de programmation?
Ensuite voir le code
Ensuite voir le code
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
16 janv. 2017 à 11:46
16 janv. 2017 à 11:46
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
16 janv. 2017 à 18:01
16 janv. 2017 à 18:01
Je te propose d'intercaler une ligne comme ceci:
a mettre après cette ligne en adaptant le nom de ta listBox
Voilà
Dim x As Integer 'inverse liste For x = ListBox1.Items.Count - 1 To 0 Step -1 ListBox1.Items.Add(ListBox1.Items(x).ToString) ListBox1.Items.Remove(ListBox1.Items(x).ToString) Next 'ajoute ligne For x = ListBox1.Items.Count - 1 To 0 Step -1 ListBox1.Items.Add(ListBox1.Items(x).ToString) ListBox1.Items.Add(" ") ListBox1.Items.Remove(ListBox1.Items(x).ToString) Next
a mettre après cette ligne en adaptant le nom de ta listBox
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
Voilà
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
16 janv. 2017 à 18:08
16 janv. 2017 à 18:08
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
16 janv. 2017 à 18:32
16 janv. 2017 à 18:32
Je pense que le message est clair, il faut que tu trouves une autre solution! Et abandonner le fait d'agrandir les items.
Quand tu lis bien le lien que je t'ai fourni, il est stipulé qu'il faut redessiner chaque item.
Vaste tâche!!!!
@+ Le Pivert
Quand tu lis bien le lien que je t'ai fourni, il est stipulé qu'il faut redessiner chaque item.
Vaste tâche!!!!
@+ Le Pivert
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
16 janv. 2017 à 20:45
16 janv. 2017 à 20:45
D'accord m'est moi je n'ai jamais dit que je voulais agrandir mes items je voulais juste les écartés :/
Mais par contre non je ne peux pas abandonné car ce projet n'est pas pour moi c'est pour mon chef je suis en stage, alors cela serait vraiment sympa de votre part si vous avez une idée.
Merci d'avance
Cordilement
Mais par contre non je ne peux pas abandonné car ce projet n'est pas pour moi c'est pour mon chef je suis en stage, alors cela serait vraiment sympa de votre part si vous avez une idée.
Merci d'avance
Cordilement
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
17 janv. 2017 à 14:14
17 janv. 2017 à 14:14
J'ai pensé à une chose, si c'était ta DataSource que tu modifiais en y ajoutant des lignes vides intercalées
A essayer!
@+ Le Pivert
A essayer!
@+ Le Pivert
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
17 janv. 2017 à 14:58
17 janv. 2017 à 14:58
Merci à tous de votre aide vous avez raison c'est bien avec le DrawItem que cs_Le_Pivert ma fourni cela fonctionne parfaitement il me manquait juste à écrire
à la ligne :
e.Graphics.DrawString(Me.ListBox1.Items(e.Index), New Font(Me.Font, FontStyle.Bold)
e.Graphics.DrawString(Me.ListBox1.Items(e.Index)("marque").ToString, New Font(Me.Font, FontStyle.Bold)
puis quand j'ai rajouté le script de Whismeril pour centrer le texte tout est parfait je vous remerci à tous bonne journée maintenant je vais pouvoir avancer ;)
à la ligne :
e.Graphics.DrawString(Me.ListBox1.Items(e.Index), New Font(Me.Font, FontStyle.Bold)
e.Graphics.DrawString(Me.ListBox1.Items(e.Index)("marque").ToString, New Font(Me.Font, FontStyle.Bold)
puis quand j'ai rajouté le script de Whismeril pour centrer le texte tout est parfait je vous remerci à tous bonne journée maintenant je vais pouvoir avancer ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
Modifié par Programming_018 le 17/01/2017 à 15:54
Modifié par Programming_018 le 17/01/2017 à 15:54
help for me quand j'étais en train de faire un script qui me permet d'ajouter des marques et que j'appuie sur entrée une erreur apparaît
si vous avez une solution je suis preneur
Private Sub Ajouter_Marque() Dim ConnectionSQL = New MySqlConnection Dim COMMAND = New MySqlCommand Dim Query As String ConnectionSQL.ConnectionString = URLBDD Dim READER As MySqlDataReader Try ConnectionSQL.Open() Query = "INSERT INTO marque(nomMarque) VALUES ('" & TxtMarque.Text & "')" COMMAND = New MySqlCommand(Query, ConnectionSQL) READER = COMMAND.ExecuteReader ConnectionSQL.Close() Actualisation_Marque() MsgBox("La marque : " & TxtMarque.Text & " a bien été ajouté !", MsgBoxStyle.Information, "Information : 3") Catch ex As Exception MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2") Finally ConnectionSQL.Dispose() End Try End Sub
si vous avez une solution je suis preneur
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Utilisateur anonyme
17 janv. 2017 à 18:21
17 janv. 2017 à 18:21
J'ai des doutes sur la syntaxe cette ligne!
Dim texte As String = LB1.Items(e.Index)("marque").ToString()
Utilisateur anonyme
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
17 janv. 2017 à 18:31
17 janv. 2017 à 18:31
Oui aussi.
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
7
17 janv. 2017 à 20:16
17 janv. 2017 à 20:16
Bonsoir alors pour ce qui est du code de Actualisation_Marque() le voci
Et pour ce qui est de la ligne de votre doute quand j'enlève ("marque").ToString cela me fait ce qui suit :
Alors que en le rajoutant cela fonctionne parfaitement
Merci
Cordialement
Dim ConnectionSQL = New MySqlConnection Dim COMMAND = New MySqlCommand Dim SDA = New MySqlDataAdapter Dim dbDataSet = New DataTable Dim bSource = New BindingSource Dim Query As String ConnectionSQL.ConnectionString = Connection de ma base de donnée Try 'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha Query = "SELECT marque FROM 853339_depannage.materielocass GROUP BY marque ORDER BY marque" COMMAND = New MySqlCommand(Query, ConnectionSQL) With SDA .SelectCommand = COMMAND .Fill(dbDataSet) End With bSource.DataSource = dbDataSet LB1.DisplayMember = "marque" LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox SDA.Update(dbDataSet) ConnectionSQL.Close() Catch ex As Exception MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2") Finally ConnectionSQL.Dispose() End Try End Sub
Et pour ce qui est de la ligne de votre doute quand j'enlève ("marque").ToString cela me fait ce qui suit :
Alors que en le rajoutant cela fonctionne parfaitement
Merci
Cordialement
Utilisateur anonyme
>
Programming_018
Messages postés
108
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 mai 2024
17 janv. 2017 à 20:42
17 janv. 2017 à 20:42
ha oui, en effet, du coup la ligne
Le message d'erreur dit que l'index -1 est hors limites, ce qui est normal, les index vont de 0 à nombre d'items - 1.
Puisque tu dis que ce message apparait à l'ajout, je suppose que c'est au moment ou tu changes le datasource (d'ailleurs il serait judicieux de faire
Il y a un instant ou la liste est vidée, et l'index d'affichage (pas de la collection d'items) passe à -1, ce qui signifie qu'il n'y a rien de sélectionné.
Je pense qu'en ajoutant un test sur e.Index différent -1 au début de la méthode DrawItem, ça va marcher.
LB1.DisplayMember = "marque"ne sert à rien, puisque c'est toi qui écrit le texte.
Le message d'erreur dit que l'index -1 est hors limites, ce qui est normal, les index vont de 0 à nombre d'items - 1.
Puisque tu dis que ce message apparait à l'ajout, je suppose que c'est au moment ou tu changes le datasource (d'ailleurs il serait judicieux de faire
bSource.DataSource = Nothing'libére la ressource précédente bSource.DataSource = dbDataSet)
Il y a un instant ou la liste est vidée, et l'index d'affichage (pas de la collection d'items) passe à -1, ce qui signifie qu'il n'y a rien de sélectionné.
Je pense qu'en ajoutant un test sur e.Index différent -1 au début de la méthode DrawItem, ça va marcher.
Modifié par Programming_018 le 16/01/2017 à 11:56
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
AH ok !!
16 janv. 2017 à 11:59
J'en déduit que c'est du VB.Net.
Donc voir ceci:
https://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-1-q
16 janv. 2017 à 12:01
Modifié par Whismeril le 16/01/2017 à 16:45
Du Vb c'était Vb1, ça fait 20 ans que ça n.esxiste plus
Aujourd'hui il y a
Le problème étant que Microsoft n.est pas foutu de trouver des noms différents à des langages différents