ListBox VisualBasic
Résolu
Programming_018
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
Programming_018 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
Programming_018 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- ListBox VisualBasic
- Visualbasic - Télécharger - Langages
- Visualbasic editor - Télécharger - Langages
- Utilisation de listbox - Forum Bureautique
- Trié un listBox ✓ - Forum Programmation
- Rafraichir une listbox c# - Forum C#
5 réponses
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
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
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()

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à
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
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
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
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
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.
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 !!
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
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