Redimensionnement auto des colonnes d'un ListView avec le redimensionnement de l

Résolu
mftdev
Messages postés
8
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
28 juin 2012
- 25 mai 2012 à 15:14
mftdev
Messages postés
8
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
28 juin 2012
- 30 mai 2012 à 11:48
Bonjour,

J'ai trouvé pas mal de sujets sur le redimensionnement automatique de la largeur des colonnes d'un ListView selon la taille du texte contenu dans l'entête de colonne ou selon la taille du texte contenu dans les items,
mais je n'ai rien trouvé sur le redimensionnement automatique de la largeur des colonnes d'un ListView selon le redimensionnement de la fenêtre parente...
Je m'explique :
J'ai un ListView qui comporte 2 colonnes et qui occupe toute la largeur de ma fenêtre.
Je l'ai ancré à gauche et à droite pour qu'il suive la taille de la fenêtre, mais je voudrais aussi que mes 2 colonnes changent de taille en même temps pour se répartir la largeur...

Est-ce que ça vous semble possible ?


Merci par avance.

4 réponses

Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
26 mai 2012 à 00:04
Bonsoir,

je ne me sert par de listview, mais as tu essayer quelque chose comme ça

listView2.Columns[0].Width = listView2.Width / 2;



Whismeril
3
mftdev
Messages postés
8
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
28 juin 2012

29 mai 2012 à 16:47
Merci Whismeril, en effet c'était tout simple !...
Je l'ai adapté en fonction de mon environnement, en fonction d'une éventuelle scrollbarre verticale
et du comportement que je souhaitais...
C'est tout simple mais ça marche nickel.

J'appelle ma fonction à chaque chargement de ma liste
et à chaque redimensionnement de la fenêtre :

Si ça peut intéresser quelqu'un...
(Attention, j'ai seulement 2 colonnes : code à généraliser si besoin)

        /// <summary>
        /// Réorganisation automatique de la largeur des colonnes de MyList
        /// selon toutes les circonstances,
        /// sauf si l'utilisateur a spécifié manuellement une largeur de colonne
        /// </summary>
        private void MyListAutoResizeColumns()
        {
            // Si l'utilisateur n'a pas modifié la largeur d'une colonne
            if (MyList.Columns[0].Width == MyList.Columns[1].Width)
            {
                // Si le nombre d'items entraîne l'utilisation d'une scrollbarre
                if ((MyList.Items.Count * 17) > (MyList.Size.Height - 28))        // La hauteur d'un item de la liste est de 17 pixels, d'une en-tête de colonne : 28 pixels
                {
                    // Le redimensionnement des colonnes se fait selon la largeur de la scrollbarre qui est de 17 pixels et une marge fixe
                    MyList.Columns[0].Width = ((MyList.Width - 17) / 2 - 2);
                    MyList.Columns[1].Width = ((MyList.Width - 17) / 2 - 2);
                }
                else
                {
                    // Le redimensionnement des colonnes se fait selon une marge fixe
                    MyList.Columns[0].Width = (lstContacts.Width / 2 - 2);
                    MyList.Columns[1].Width = (lstContacts.Width / 2 - 2);
                }
            }

        }
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
29 mai 2012 à 17:54
De rien,

clique sur réponse acceptée pour que ton sujet apparaissent résolu.

Cdt


Whismeril
0
mftdev
Messages postés
8
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
28 juin 2012

30 mai 2012 à 11:48
Oui, désolé,
J'ai oublié...
0