ListView : Resize de colonne

yfocal Messages postés 7 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 31 janvier 2005 - 31 janv. 2005 à 12:01
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 - 31 janv. 2005 à 14:36
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

TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 23
31 janv. 2005 à 13:17
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
0
yfocal Messages postés 7 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 31 janvier 2005
31 janv. 2005 à 14:09
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
0
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 23
31 janv. 2005 à 14:36
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
0