Bonjour,
Je cherche comment masquer les colonnes d'une ListView. Je crois que ce n'est pas possible en tant que tel, et c'est la raison pour laquelle je me suis décidé à "tout simplement" empêcher le redimensionnement de mes colonnes.
Le problème, c'est que une fois que j'ai effectué cet empêchement de redimensionner, je ne peux plus cliquer sur les entêtes de mes colonnes pour effectuer un tri ascendant ou descendant. (l'événement sur le clic n'est plus opérationnel)
Le code de trie est bon, le code de blocage de redimensionnement est bon, mais je n'arrive pas à utiliser les 2 en même temps.
Merci à tous pour votre aide
Slyv
Voici un peu de code :
[using]
namespace Agenda
{
public class appPrincipal : System.Windows.Forms.Form
{
private MaListView listView1;
private ListViewColumnSorter lvwColumnSorter;
[?]
private void InitializeComponent()
{
this.listView1 = new MaListView();
this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
this.listView1.ListViewItemSorter=new ListViewColumnSorter();
}
[...]
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
}
public class MaListView : ListView
{
public const int WM_NOTIFY = 0x4E;
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)]
public struct NMHDR
{
public int hwndFrom;
public int idFrom;
public int code;
}
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NOTIFY:
{
NMHDR nmh = (NMHDR) m.GetLParam(typeof (NMHDR));
if (nmh.code == HDN_BEGINTRACKA || nmh.code == HDN_BEGINTRACKW)
{
m.Result = new IntPtr(-1);
}
}
break;
default:
base.WndProc (ref m);
break;
}
}
}