ListView : Resize de colonne

Signaler
Messages postés
7
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
31 janvier 2005
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Bonjour,





j'ai un petit souci avec les listview.





J'ai une listview avec, pour chacun des items, un Panel de couleur
affiché dans une colonne (Panel ajouté dans la collection Controls).





Mon pb est que quand on fait un redimensionnement de colonne, je voudrais pouvoir repositionner mes controles.





Donc, 2 solutions :


1) repositionner mes controles Panel sur evenement ColumnResize


2) interdire le redimensionnement des colonnes





Donc ma question est : est-ce que la premiere solution est possible ?
Si non, comment interdire le redimensionnement des colonnes ?





Merci


Yann

3 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
19
1) As tu essayé déjà ?
2) pour interdirele redimensionnement il faut intercepter le message


public const int WM_NOTIFY = 0x04;


public const int HDN_FIRST = -300;
public const int HDN_BEGINTRACKA = HDN_FIRST - 6;
public const int HDN_BEGINTRACKW = HDN_FIRST - 26;
[StructLayout(LayoutKind.Sequential)]
struct NMHDR
{
public IntPtr hwndFrom;
public int idFrom;
public int code;
}

ensuite dans le override du wndproc


if (m.msg == WM_NOTIFY)
{
NMHDR hdr = m.GetLParam as NMHDR;if (hdr.code BEGINTRACKA || hdr.code BEGINTRACKW)
{
m.result = new IntPtr(1);
return;
}
}
base.WndProc(m)






ensuite tu overrides le wndproc

::|The S@ib|::
MVP C#.NET
Messages postés
7
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
31 janvier 2005

En fait, je sais pas comment faire pour intercepter l'evenement Resize de colonne. Donc pour le 1), je sais pas comment faire.



Et pour le 2), j'ai pas compris ta solution. Je débute en C# et programmation Windows.



Merci
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
19
1) il n'y pas d'evenement sur les columnheader qui permet d'intercepter le resize c'est pour çà qu'il faut intercepter les messages windows a destination de ton listview.

Ici un code en VB.NEt qui permet de declancher les evenemnt. Reste a le traduire en c#

http://www.google.de/groups?selm=242c4ae9-0baf-470d-9d84-87588b29f01d%40UGI20752

::|The S@ib|::
MVP C#.NET