J'ai un UserControl dessiné par le propriétaire dans lequel j'ai implémenté le double-buffering. Afin d'obtenir une double mémoire tampon pour travailler sans scintillement, je dois passer outre l'événement OnPaintBackground comme ceci:Contrôle de l'apparence du concepteur de UserControl en double-buffered dessiné par le propriétaire dans C#/.NET 2.0
protected override void OnPaintBackground(PaintEventArgs e)
{
// don't even have to do anything else
}
Cela fonctionne très bien à l'exécution. Le problème est que lorsque j'ai une instance du contrôle sur un formulaire au moment du design, il devient un trou noir qui montre les traces de toutes les fenêtres qui sont déplacées dessus (parce que le contour de l'événement OnPaintBackground gouverne aussi l'apparence au moment du design). C'est juste un problème esthétique, mais c'est visuellement discordant et cela amène toujours les nouveaux développeurs sur le projet à supposer que quelque chose a horriblement mal tourné.
Est-il possible d'avoir une méthode surchargée comme celle-ci ne pas être remplacée au moment de la conception, ou existe-t-il une autre solution?
Y at-il une raison quelconque, vous ne pouvez pas utiliser le haut-tampon double? –
Oui - cela ne fonctionne pas. Si vous créez un contrôle utilisateur avec DoubleBuffered = true, puis effectuez un tas d'opérations de dessin dessus, vous obtiendrez un scintillement. Je ne suis vraiment pas sûr de ce que cette propriété fait même. – MusiGenesis