2008-10-27 9 views
4

J'essaie d'utiliser le contrôle d'en-tête Windows natif (Thème) pour afficher seulement quelques en-têtes de colonne. L'objectif principal est d'éviter de dessiner manuellement les en-têtes de colonne et de s'appuyer sur la fonctionnalité prise en charge en mode natif.Contrôle d'en-tête dans WinForms - une telle chose?

Ainsi, les 2 options je pensais sont:

  1. Utilisez un HeaderControl et ajouter des colonnes à elle (je ne peux pas sembler trouver un contrôle d'en-tête supporté par WinForms).

  2. Utilisez un contrôle ListView et indiquez qu'il n'affiche aucune ligne (ou définissez sa hauteur à la hauteur de l'en-tête de colonne) - impossible de déterminer la hauteur que j'attribuerais au contrôle.

Toutes les bonnes idées très appréciées!

Répondre

4

Il n'y a pas HeaderControl pour WinForms dans le cadre .NET jusqu'à présent (la ListView utilise la classe ColumnHeader mais cela est seulement utile avec le ListView). Si vous ne faites que cibler Microsoft Windows, vous pouvez envisager d'envelopper le contrôle Win32 pour l'utiliser dans .NET, même si je pense que ce sera un travail considérable.

Votre deuxième option est une possibilité valide même si elle semble un peu maladroite. Je peux voir des difficultés surgissant en obtenant la taille à la liste correctement de sorte que l'en-tête et seulement l'en-tête soit visible.

Une troisième option serait de rouler votre propre HeaderButton qui représente une colonne (comme ColumnHeader) et utiliser le dessin thématique appelle à dessiner, puis juste les combiner dans un FlowLayoutPanel ou TableLayoutPanel dans votre barre d'en-tête. Si vous voulez redimensionner, vous pouvez faire en sorte que le HeaderButton ait une région de saisie que vous pouvez ramasser et modifier sa largeur.

Je pense que la troisième option sera raisonnablement simple à créer, même avec la capacité de calibrage, donc je recommanderais de prendre cette route (je pourrais même l'essayer moi-même quand je rentrerai à la maison ce soir).

Questions connexes