est-il possible de dessiner des chaînes sur une liste de liste? p>
J'ai remplacé l'événement Onpaint mais je ne vois aucun changement. J'ai vérifié du code sur Custom ListView, mais il semble que des personnes utilisent p / invoke, etc. Pourquoi? P>
n'est pas une liste aussi personnalisable que d'autres Winforms, comme le contrôle des boutons? p>
Je ne vais pas personnaliser sauvagement, peignez simplement un peu plus après que cela soit fait la peinture standard. P>
3 Réponses :
class MyCustomlistView : ListView { public MyCustomlistView() : base() { SetStyle(ControlStyles.UserPaint, true); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawString("This is a custom string", new Font(FontFamily.GenericSerif, 10, FontStyle.Bold), Brushes.Black, new PointF(0, 50)); } }
Cela ne fonctionne pas avec une liste de réception. Cela fait simplement que la listeView ne rien dessiner.
Définir le OwnerDraw propriété pour true. p>
Vous pouvez ensuite gérer le Drawitem < / a>, DrawsUntem , et DrawColumnheader événements à dessiner sur Éléments spécifiques de la liste de liste. P>
Vous ne pouvez pas simplement remplacer la méthode Utilisez un ObjectListView (une enveloppe open source autour de .NET WinForms Listview ) et utilisez son fonction de superposition . Qui vous permet de faire sans effort quelque chose comme ceci: p> Ceci a été produit par ce code: p> Onpaint () code>. Cette méthode ne fait rien dans une liste de réception. De même,
OwnerDrawn code> vous permet de dessiner personnalisé chaque cellule, mais ne vous laissez pas peindre sur le contrôle dans son ensemble.