Bonjour,
Je viens d'effecture une recherche mais j'ai pas trouvé...
comment fait-on pour bloquer le redimensionnement des colonnes d'un listview?
Merci
Bonjour,
Je viens d'effecture une recherche mais j'ai pas trouvé...
comment fait-on pour bloquer le redimensionnement des colonnes d'un listview?
Merci
Moi non plus, pour l'instant. Mais je dois passer à autre chose maintenant. Peut-être qu'en cherchant du côté des API Windows...
Bonne chance.
Quelqu'un a t'il trouvé une solution car cela fait aussi un petit moment que je cherche?
A part biensur, de se servir de l'evenement OnResize des colonnes pour redimensionner en dur à leur taille originale.
Bonjour,
Tu as le choix...
Je te donne ici 2 solutions :
1) La plus facile : l'utilisation d'un timer pour restituer systématiquement les dimensions :
Formule du genre (pour chaque colonne) :
2) la plus élégante mais la plus complexe : masquer tes entêtes par un cadre invisible (un vrai, hein... pas du type où on peut "cliquer au travers")... Mais celle-là demande un niveau bien plus élevé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ListView1.ColumnHeaders.Item(n).Width = .....
Il y en a d'autres, mais je crois que tu devrais te cantonner à la solution facile du timer.
Edit : tiens : une autre encore (bien que je ne l'aime pas du tout pour mille et une raisons ...) : interdire au cuseur de ta souris d'aller dans la zone où on peut modifier la taille des colonnes ).
Et une autre encore moins gourmande : laisser les modifications de taille se faire mais rétablir la situation au vrais moments "cruciaux" (au mousemove sur les colonnes elles-même , pas sur les headers), qui ne nécessite aucun timer.
J'arrête (car la liste des stratégies possibles est vraiment longue...)
Ok merci pour ces nombreuses solutions.
ps: Mr Microsoft merci de nous mettre une propriete true /false dans la prochaine version.
Tiens, j'ai voulu chercher un moyen de le faire pour pas trop cher et sans timer.
Idée :
1) le focus est donné à la listview si l'on utilise la souris dans sa partie supérieure (là où on peut modifier les largeurs)
2) on saisit alors l'évènement GotFocus pour "forcer la main"
3) il est alors clair qu'il faut à nouveau perdre de focus si on corrige, de sorte à obliger l'utilisateur à y revenir (et donc à passer à nouveau par l'évènement espion GorFocus).
Mécanisme, donc : si on corrige ===>> enabled False ===>> perte focus ===>> enabled True (tout bête mais efficace).
Exemple (ici pour former la 1ère colonne à rester à sa largeur (supposons 400) :
sans faille sur ma machine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub ListView1_GotFocus() madim = 400 If ListView1.ColumnHeaders.Item(1).Width = madim Then Exit Sub ListView1.ColumnHeaders.Item(1).Width = madim ListView1.Enabled = False ListView1.Enabled = True End Sub
Tu dis...
Edit : attention : il est clair que ta form doit pour ce faire contenir au moins un autre contrôle pouvant recevoir le focus (quel qu'il soit)
Partager