Masquer les colonnes d'une ListView [Résolu]

Signaler
Messages postés
49
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2005
-
Messages postés
49
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2005
-
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;

}

}

}

5 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
pourquoi ne pas plutot trier dans une collection séparée puis ajouter les items dans l'ordre dans ton listview ensuite, avec seulement les données qui doivent être visibles par l'utilisateur ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
49
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2005

(Re) bonjour,

J'ai mis le code sur un lien internet pour que ce soit plus lisible
http://ffadventure.free.fr/code.html

Slyv
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Pour masquer une colonne, pourquoi ne pas donner la valeur 0 à sa taille ? (juste une petite idée comme ça...)
Messages postés
49
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2005

Salut,

j'ai déjà ma colonne en taille 0, donc elle n'est pas visible par l'utilisateur, mais je voudrais bloquer le redimensionnement des colonnes pour pas que mes 2 colonnes utiles pour le trie soit visible pour l'utilisateur.

Parallèlement à cela, sur mes autres colonnes, j'ai besoin d'effectuer un trie de façon ascendante ou descendante sur mes différentes colonnes.

Donc ceci est plus dans un but de ne pas permettre à l'utilisateur de pouvoir faire n'importe quoi :)

Sylvain
Messages postés
49
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2005

Salut,

Merci pour vos réponses et merci à toi, le coq pour ta proposition.

C'est effectivement la solution que j'ai choisit et cela marche parfaitement !!!!

Bon week end à vous et bonnes fêtes de fin d'année.

Slyv