Si je crée une classe et fais dériver d'un ListView comme ça ...Pourquoi l'événement OnDrawItem d'un ListView n'affecte-t-il pas l'environnement au moment du design?
class MyListView : ListView
{
public MyListView() : base()
{
DoubleBuffered = true;
OwnerDraw = true;
Cursor = Cursors.Hand;
Scrollable = false;
}
protected override void OnDrawItem(DrawListViewItemEventArgs e)
{
//base.OnDrawItem(e);
}
}
Puis-je ouvrir la vue de la conception de ma forme Windows et ajouter un nouvel objet MyListView puis ajoutez un seul élément et le lier à une liste d'images. Je peux voir qu'il y a un élément dans l'objet mylistview. Il n'a aucun effet sur l'objet que j'ai sur mon formulaire appelé lv
de type MyListView
. Lorsque je lance mon application, je vois exactement ce à quoi je m'attendais et il n'y a aucun élément listé.
Pourquoi cela affecterait-il le temps d'exécution et non la conception?
Umm ... OK, bien, je colle ce code dans un nouveau fichier de classe, puis ouvrez mon formulaire et cliquez sur la boîte à outils et faites-le glisser sur le formulaire. Je sélectionne le nouvel objet sur le formulaire et change 'LargeImageList' pour ma liste d'images et édite les éléments pour inclure un élément avec une image de la liste d'images et utilise le' View' par défaut de 'LargeIcon'. Il montre l'objet très bien au moment de la conception, mais exécutez-le et il n'y a rien affiché ... Comment vous le faites fonctionner est incroyable pour moi. –
Le fait de ne pas définir la propriété View est une grosse erreur, cela compte beaucoup lorsque vous dessinez. À l'heure actuelle, vous ne voyez que l'étiquette, ce n'est pas personnalisé.Deviner: n'utilisez pas l'événement Load pour changer les propriétés, c'est * gauche *. –
J'ai également testé avec ce code: 'this.View = System.Windows.Forms.View.Details; this.OwnerDraw = true; this.Columns.Add ("X"); this.Items.Add ("1"); this.Items.Add ("2"); 'Mais rien n'a changé. –