Masquer les colonnes d'une ListView

Résolu
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 11 déc. 2004 à 15:26
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 18 déc. 2004 à 12:39
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 déc. 2004 à 12:09
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#
3
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
11 déc. 2004 à 15:32
(Re) bonjour,

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

Slyv
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 déc. 2004 à 08:16
Pour masquer une colonne, pourquoi ne pas donner la valeur 0 à sa taille ? (juste une petite idée comme ça...)
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
13 déc. 2004 à 11:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
18 déc. 2004 à 12:39
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
0
Rejoignez-nous