2009-10-20 26 views
0

J'ai un contrôle utilisateur qui a des contrôles WinForm à l'intérieur. Je veux être capable de peindre moi-même ces contrôles internes (à des fins de défilement, certains d'entre eux resteront, d'autres bougeront).Arrêter les contrôles d'être peints

Même quand je la passer outre OnPaint et la méthode OnPaintBackground, les commandes continue d'afficher sur mon usercontrol qui est complètement noir maintenant parce qu'il n'y a pas de méthodes de peinture sur elle.

Est-ce qu'il y a une manière que je peux supprimer ces contrôles d'être peints et puis les peindre par moi-même avec la méthode DrawToBitmap de chaque contrôle?

Répondre

1

Oui. Supprimez-les (ou, mieux encore, ne les ajoutez jamais) à l'ensemble des contrôles enfants de UserControl. Simuler l'interaction avec les contrôles va être un PITA, cependant.

Avez-vous juste besoin des commandes pour "regarder" comme elles sont là. Ou ont-ils besoin d'être réellement là? Si c'est le dernier, vous feriez mieux de truquer le défilement en repositionnant les contrôles manuellement.

Essayer de réinventer le système de fenêtrage est un exercice douloureux. Vous serez mieux si vous apprenez et travaillez dans ses paradigmes.

+0

ouais est douloureux, et je n'ai rien trouvé de vraiment utile en ligne. Je voudrais voir l'implémentation DatagridView. Je veux dire qu'il prend en charge la personnalisation des contrôles. – jmayor

1

Si vous n'avez pas besoin d'interaction, réglez chaque contrôle enfant .Visible = false.

Sinon, avez-vous essayé WM_SETREDRAW?