J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois qu'elles sont modifiiées.
"Lebrun Thomas" a écrit :
Non, a ma connaissance, il n'y en a pas.
Pourquoi, tu veux empêcher le redimensionnement d'une colonne d'un contrôle ListView ? Car si c'est ca, j'ai un bout de code pour toi :)
A+
LEBRUN Thomas.
-------------------------------
"Jmb" a écrit :
> Rebonjour, > Existe-t-il un événement pour intercepter un redimensionnement d'une colonne > d'un contrôle ListView? > Merci.
Lebrun Thomas
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes d'un listview.
Peut-être voir du coté des ColumnsHeader....
A+
"Jmb" a écrit :
J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois qu'elles sont modifiiées.
"Lebrun Thomas" a écrit :
> Non, a ma connaissance, il n'y en a pas. > > Pourquoi, tu veux empêcher le redimensionnement d'une colonne d'un contrôle > ListView ? Car si c'est ca, j'ai un bout de code pour toi :) > > > A+ > > > LEBRUN Thomas. > > ------------------------------- > > "Jmb" a écrit : > > > Rebonjour, > > Existe-t-il un événement pour intercepter un redimensionnement d'une colonne > > d'un contrôle ListView? > > Merci.
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes d'un
listview.
Peut-être voir du coté des ColumnsHeader....
A+
"Jmb" a écrit :
J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois
qu'elles sont modifiiées.
"Lebrun Thomas" a écrit :
> Non, a ma connaissance, il n'y en a pas.
>
> Pourquoi, tu veux empêcher le redimensionnement d'une colonne d'un contrôle
> ListView ? Car si c'est ca, j'ai un bout de code pour toi :)
>
>
> A+
>
>
> LEBRUN Thomas.
>
> -------------------------------
>
> "Jmb" a écrit :
>
> > Rebonjour,
> > Existe-t-il un événement pour intercepter un redimensionnement d'une colonne
> > d'un contrôle ListView?
> > Merci.
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes d'un listview.
Peut-être voir du coté des ColumnsHeader....
A+
"Jmb" a écrit :
J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois qu'elles sont modifiiées.
"Lebrun Thomas" a écrit :
> Non, a ma connaissance, il n'y en a pas. > > Pourquoi, tu veux empêcher le redimensionnement d'une colonne d'un contrôle > ListView ? Car si c'est ca, j'ai un bout de code pour toi :) > > > A+ > > > LEBRUN Thomas. > > ------------------------------- > > "Jmb" a écrit : > > > Rebonjour, > > Existe-t-il un événement pour intercepter un redimensionnement d'une colonne > > d'un contrôle ListView? > > Merci.
Zoury
Bonjour messieurs! :O)
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes
d'un
listview.
Exact.
On peut toutefois définir une classe héritant de ListView et qui override la procédure WndProc(). Un message WM_NOTIFY est envoyé au listview avec le code HDN_BEGINTRACKA ou HDN_BEGINTRACKW lorsque l'utilisateur s'apprête a redimensionner les colonnes. Il faut capter ce message, retourné TRUE dans le membre Result du message et ne pas appelé la méthode WndProc() de la classe Listview (base.WndProc())
Exemple : //*** using System; using System.Runtime.InteropServices;
namespace ColumnWidthSolution { public class ListViewEx : System.Windows.Forms.ListView { public ListViewEx() {}
[StructLayout(LayoutKind.Sequential)] private struct NMHDR { public Int32 hwndFrom; public Int32 idFrom; public Int32 code; }
[StructLayout(LayoutKind.Sequential)] private struct NMHEADER { public NMHDR hdr; public Int16 iItem; public Int16 iButton; public Int32 pitem; }
protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == WM_NOTIFY) { NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam, typeof(NMHEADER)); if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW) { // l'utilisateur s'apprête à redimensionner les colonnes.. // nmh.iItem nous renvoit l'index de cette dernière. Console.WriteLine("Colonne : {0}", nmh.iItem.ToString()); // pour éviter le redimensionnement // il faut retourner TRUE et ne pas appelé base.WndProc() m.Result = (IntPtr)1; return; } } base.WndProc(ref m); } } } //***
Tu utilise le contrôle ListViewEx de la même manière que ListView standard.
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/
Bonjour messieurs! :O)
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes
d'un
listview.
Exact.
On peut toutefois définir une classe héritant de ListView et qui override la
procédure WndProc(). Un message WM_NOTIFY est envoyé au listview avec le
code HDN_BEGINTRACKA ou HDN_BEGINTRACKW lorsque l'utilisateur s'apprête a
redimensionner les colonnes. Il faut capter ce message, retourné TRUE dans
le membre Result du message et ne pas appelé la méthode WndProc() de la
classe Listview (base.WndProc())
Exemple :
//***
using System;
using System.Runtime.InteropServices;
namespace ColumnWidthSolution
{
public class ListViewEx : System.Windows.Forms.ListView
{
public ListViewEx() {}
[StructLayout(LayoutKind.Sequential)]
private struct NMHDR
{
public Int32 hwndFrom;
public Int32 idFrom;
public Int32 code;
}
[StructLayout(LayoutKind.Sequential)]
private struct NMHEADER
{
public NMHDR hdr;
public Int16 iItem;
public Int16 iButton;
public Int32 pitem;
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_NOTIFY)
{
NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam,
typeof(NMHEADER));
if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW)
{
// l'utilisateur s'apprête à redimensionner les colonnes..
// nmh.iItem nous renvoit l'index de cette dernière.
Console.WriteLine("Colonne : {0}", nmh.iItem.ToString());
// pour éviter le redimensionnement
// il faut retourner TRUE et ne pas appelé base.WndProc()
m.Result = (IntPtr)1;
return;
}
}
base.WndProc(ref m);
}
}
}
//***
Tu utilise le contrôle ListViewEx de la même manière que ListView standard.
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Ok, mais il n'y a pas d'evenement pour le redimensionnement des colonnes
d'un
listview.
Exact.
On peut toutefois définir une classe héritant de ListView et qui override la procédure WndProc(). Un message WM_NOTIFY est envoyé au listview avec le code HDN_BEGINTRACKA ou HDN_BEGINTRACKW lorsque l'utilisateur s'apprête a redimensionner les colonnes. Il faut capter ce message, retourné TRUE dans le membre Result du message et ne pas appelé la méthode WndProc() de la classe Listview (base.WndProc())
Exemple : //*** using System; using System.Runtime.InteropServices;
namespace ColumnWidthSolution { public class ListViewEx : System.Windows.Forms.ListView { public ListViewEx() {}
[StructLayout(LayoutKind.Sequential)] private struct NMHDR { public Int32 hwndFrom; public Int32 idFrom; public Int32 code; }
[StructLayout(LayoutKind.Sequential)] private struct NMHEADER { public NMHDR hdr; public Int16 iItem; public Int16 iButton; public Int32 pitem; }
protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == WM_NOTIFY) { NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam, typeof(NMHEADER)); if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW) { // l'utilisateur s'apprête à redimensionner les colonnes.. // nmh.iItem nous renvoit l'index de cette dernière. Console.WriteLine("Colonne : {0}", nmh.iItem.ToString()); // pour éviter le redimensionnement // il faut retourner TRUE et ne pas appelé base.WndProc() m.Result = (IntPtr)1; return; } } base.WndProc(ref m); } } } //***
Tu utilise le contrôle ListViewEx de la même manière que ListView standard.
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/
Zoury
> > J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois > qu'elles sont modifiiées.
Il faut capter ce message, retourné TRUE dans le membre Result du message et ne pas appelé la méthode WndProc() de la classe Listview (base.WndProc())
... a force chercher une solution, j'ai fini par perdre l'essence du problème.. Étant donnée que tous ce que tu souhaites c'est récupérer la taille des colonnes avant que celles-ci soient redimensionnées, tu n'as pas à exécuter les actions décrites ci-haut (elle empêchent le redimensionnement).
Tu aurais seulement : //*** protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == WM_NOTIFY) { NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam, typeof(NMHEADER)); if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW) { // mets ton code ici.. } } // on appelle la WndProc() originale. base.WndProc(ref m); } } //***
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/
> > J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois
> qu'elles sont modifiiées.
Il faut capter ce message, retourné TRUE dans
le membre Result du message et ne pas appelé la méthode WndProc() de la
classe Listview (base.WndProc())
... a force chercher une solution, j'ai fini par perdre l'essence du
problème.. Étant donnée que tous ce que tu souhaites c'est récupérer la
taille des colonnes avant que celles-ci soient redimensionnées, tu n'as pas
à exécuter les actions décrites ci-haut (elle empêchent le
redimensionnement).
Tu aurais seulement :
//***
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_NOTIFY)
{
NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam,
typeof(NMHEADER));
if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW)
{
// mets ton code ici..
}
}
// on appelle la WndProc() originale.
base.WndProc(ref m);
}
}
//***
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
> > J'ai simplement besoin de mémoriser la taille des colonnes à chaque fois > qu'elles sont modifiiées.
Il faut capter ce message, retourné TRUE dans le membre Result du message et ne pas appelé la méthode WndProc() de la classe Listview (base.WndProc())
... a force chercher une solution, j'ai fini par perdre l'essence du problème.. Étant donnée que tous ce que tu souhaites c'est récupérer la taille des colonnes avant que celles-ci soient redimensionnées, tu n'as pas à exécuter les actions décrites ci-haut (elle empêchent le redimensionnement).
Tu aurais seulement : //*** protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == WM_NOTIFY) { NMHEADER nmh = (NMHEADER)Marshal.PtrToStructure(m.LParam, typeof(NMHEADER)); if (nmh.hdr.code == HDN_BEGINTRACKA || nmh.hdr.code == HDN_BEGINTRACKW) { // mets ton code ici.. } } // on appelle la WndProc() originale. base.WndProc(ref m); } } //***
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/