2009-03-04 15 views
2

J'ai un contrôle qui héberge un NumericUpDown dans un ToolStripControlHost et expose les propriétés NumericUpDown. Fonctionnellement, c'est bien, mais quand il est placé sur un ToolStrip il ne correspond pas visuellement avec l'autre ToolStripItem s.Comment peindre un NumericUpDown hébergé à l'aide du ToolStripRenderer existant?

Je voudrais utiliser le existant de ToolStrip pour dessiner le contrôle d'une manière similaire aux ToolStripComboBox es qui sont également sur le contrôle. Je ne suis pas intéressé par la création d'un ToolStripRenderer personnalisé pour ce faire, car je veux que les autres qui utilisent le contrôle puissent l'utiliser avec n'importe quel rendu de leur choix. J'ai essayé de surcharger OnPaint et OnPaintBackground dans la classe de contrôle d'hébergement et dans la classe de contrôle hébergée, et d'utiliser les méthodes de dessin du moteur de rendu, mais tout ce que je peux faire est d'avoir une région non peinte autour des bords; les boutons de rotation sont toujours dessinés avec le thème du système.

Comment puis-je peindre un NumericUpDown hébergé en utilisant le ToolStripRenderer existant?

Répondre

0

La classe NumericUpDown est en réalité juste un wrapper autour de la classe de contrôle commune qui existe dans le cadre de GDI. Le contrôle commun sous-jacent se dessine de deux manières différentes selon que les styles visuels sont activés pour l'application. Pour remplacer le dessin, vous devrez effectuer tout le dessin vous-même. Vous ne pouvez pas dire au contrôle que vous voulez seulement remplacer les boutons ou la bordure.

Effectuer vous-même tout le dessin est beaucoup plus dur que ça en al'air. Désolé je ne peux pas offrir une solution facile, mais je ne pense pas qu'il existe une solution facile.

+0

Je veux faire tout le dessin moi-même, mais je veux utiliser les méthodes de ToolStripRenderer pour le faire. – Simon