mftdev
Messages postés8Date d'inscriptionmardi 22 mai 2012StatutMembreDernière intervention28 juin 2012
-
25 mai 2012 à 15:14
mftdev
Messages postés8Date d'inscriptionmardi 22 mai 2012StatutMembreDernière intervention28 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...
mftdev
Messages postés8Date d'inscriptionmardi 22 mai 2012StatutMembreDernière intervention28 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);
}
}
}