Colones automatiques, listbox

Résolu
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009 - 27 mai 2009 à 11:47
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 27 mai 2009 à 16:36
Bonjour,

j'ai programmé une lecture de table que j'ai affiché dans une listbox sous la forme titre - année - Etat

Cependant les informations sont décalés d'une ligne à l'autre, ce n'est non seulement pas très esthétiques mais sur une grosse listbox c'est difficile pour se repérer, j'aimerais que les informations soient alignés.

J'ai essayé de mettre la listbox en multicolones mais je ne vois pas de différence, de plus je crois que même si j'y parvenais je ne sais pas comment ajouter les informations à tel ou tel colonne.

Pourriez vous m'aider sil vous plait.

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 14:01
possible avec un listbox, en ajoutant des tabulations pour séparer les données...

http://www.vbfrance.com/codes/LB_SETTABSTOPS-COLONNES-DANS-LISTBOX_20841.aspx
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 15:06
ListView1.View = View.Details
ListView1.Columns.Add("titre")
ListView1.Columns.Add("année")
ListView1.Columns.Add("état")

With ListView1.Items.Add("titre d'essai")
.SubItems.Add("2009")
.SubItems.Add("disponible")
End With
With ListView1.Items.Add("titre d'essai: le retour")
.SubItems.Add("2010")
.SubItems.Add("en production")
End With

ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 12:59
une ListView (DataGrid ou autre)
me semble plus indiqué.
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 13:48
Je le sais bien cependant j'aurais préféré une listbox, je trouve que ça présente mieux

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 13:51
tu peux masquer les entetes de colonnes de ta listview, et demander a ce que la selection se fasse sur toute la ligne.

visuellement, on serai assez proche de ce que peux proposer un listbox...
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 13:53
Bon ben je vais me rabattre sur un datagrid si je trouve pas pour la listbox :s merci
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 14:58
Effectivement ça correspond à ce que je recherchais ^^ je t'en remercie.

Cependant tu as attiré ma curiosité sur les listview,  je ne sais pas les utiliser.

Pourrais tu me donner l'exemple de l'ajout de trois colonnes (titre, année, etat)

ainsi que l'assignation de trois valeurs à ses colonnes respectives (titre d'essai, 2009, disponible) ????

je te remercie
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 15:11
Vraiment magnifique ... je te remercie mille fois, j'étais en train de me battre avec ma listview ^^ merci beaucoup.
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 15:34
Il me reste un dernier souci ... désolé

Lorsque je veux récupérer le contenu d'un listview je procède comme ceci

    Private Sub listview1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv_livres.SelectedIndexChanged
        tb_titre.Text = lv_listview1.SelectedItems(0).Text
    End Sub

il me récupère donc mon titre cependant cela ne marche qu'une fois, si je clique ailleurs le programme plante, de plus je ne sais récupérer que les titres ...

Désolé mais les listview apparemment ça veut pas rentrer
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 15:38
Il faudrait que je fasse un foreach pour la sélection mais je sais pas sur quoi boucler.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 15:47
Private Sub ListView1_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
MessageBox.Show("Info: " & e.Item.Text & Environment.NewLine & _
"Année: " & e.Item.SubItems(1).Text & Environment.NewLine & _
"Etat: " & e.Item.SubItems(2).Text)
End Sub
kawa67310 Messages postés 11 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 16:19
Je te remercie, j'ai plus de problème et j'ai sut l'adapter au reste de mon code :d

si tu veux bien juste m'expliquer concrètement ce que fait

with ... end with

et pourquoi on écrit

        With ListView1.Items.Add("titre d'essai: le retour")

            .SubItems.Add("2010")

            .SubItems.Add("en production")

        End With

au lieu de

        With ListView1.Items.Add("titre d'essai: le retour").SubItems.Add("2010").SubItems.Add("en production")

        End With

je vois comment ça fonction etc mais si tu pouvais me donner des explications affin que je l'assimile ce serait sympa
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 16:36
c'est en remplacement de (en gros et de tête)

Dim oItem as ListItem
oItem = ListView1.Items.Add("titre d'essai: le retour")
oItem.SubItems.Add("2010")
oItem.SubItems.Add("en production")
Rejoignez-nous