2009-04-10 5 views
3

Si je substitue OnPaint et dessine un carré sur le contrôle, comment puis-je obtenir que e.graphics.draw ... apparaisse lorsque je le prévisualise dans le concepteur?Substitution de OnPaint

+0

Demandez-vous comment dessiner un rectangle de mise au point sur un contrôle élaboré sur mesure, ou comment voir les résultats d'une OnPaint surchargée en regardant le concepteur d'un contrôle? –

Répondre

6

http://msdn.microsoft.com/en-us/magazine/cc164048.aspx

http://msdn.microsoft.com/en-us/magazine/cc164145.aspx

Alors que vous pouvez enregistrer manuellement avec Control.OnPaint pour ajouter votre interface utilisateur de temps la conception , vous trouverez que l'annulation de OnPaintAdornments est une meilleure option, car il est seulement appelé après l'interface de conception contrôle/temps d'exécution est peint , vous permettant de mettre le glaçage sur le gâteau (voir Figure 20). Il suffit d'ajouter DesignerAttribute à la classe de l'association ClockControl termine : Copier le code

[ Designer (typeof (ClockControlDesigner)) ] Classe ClockControl: contrôle {...}

+0

Il est bon que vous ayez inclus la description du paragraphe, car ces liens sont morts. – LarsTech

1

Si vous êtes en essayant de dessiner un rectangle de focus pour votre contrôle, et qu'il soit visible lorsque vous manipulez votre contrôle après qu'il a été ajouté à un formulaire, alors Gaijin42's approach devrait fonctionner.

Si vous essayez de voir ce que votre apparence de contrôle personnalisé comme dessiné ...

  • Si vous avez outrepassée la méthode OnPaint dans le contrôle, vous devriez voir les résultats de cette OnPaint lorsque vous regardez votre contrôle après qu'il a été ajouté à un formulaire (ou un autre contrôle).

  • Si vous essayez de voir les résultats de la Paint quand on regarde le concepteur pour le contrôle lui-même, I don't think that is possible (au moins il n'a pas été avec VS2005):

    Malheureusement, ce n'est pas possible . Pendant que vous écrivez les comportements de l'utilisateur, le code n'est pas compilé et le concepteur utilise un contrôle utilisateur ordinaire pour héberger les contrôles enfants. Le OnPaint override ne fonctionnera pas.

    Pour déboguer les remplacements dans votre contrôle vous devez l'exécuter dans une sorte d'hôte . VS2005 fournit un nouveau contrôle hôte à cet effet, mais je trouve que même si cela ne suffit pas parfois.

Questions connexes