2009-03-04 11 views
2

Ich habe ein Steuerelement, das eine NumericUpDown in einem ToolStripControlHost hostet und die NumericUpDown Eigenschaften offen legt. Funktionell ist das in Ordnung, aber wenn es auf einem ToolStrip platziert wird, passt es nicht visuell mit den anderen ToolStripItem s.Wie male ich ein gehostetes NumericUpDown mit dem vorhandenen ToolStripRenderer?

Ich mag die ToolStrip der bestehenden ToolStripRenderer verwenden, um die Steuerung in einer ähnlichen Weise wie das ToolStripComboBox es zu zeichnen, die auch auf der Kontrolle. Ich bin nicht daran interessiert, eine benutzerdefinierte ToolStripRenderer zu erstellen, um dies zu tun, da ich möchte, dass andere, die das Steuerelement verwenden, in der Lage sind, es mit dem von ihnen ausgewählten Renderer zu verwenden.

Ich habe versucht zwingende OnPaint und OnPaintBackground in der Hosting-Control-Klasse und in der Steuerklasse gehostet, und die Zeichenmethoden der Renderer, aber alles, was ich erreichen kann, ist eine unbeschichtete Bereich um die Ränder zu haben; Die Drehfelder sind immer noch mit dem Systemthema gezeichnet.

Wie male ich eine gehostete NumericUpDown mit der vorhandenen ToolStripRenderer?

Antwort

0

Die NumericUpDown-Klasse ist eigentlich nur ein Wrapper um die allgemeine Steuerelementklasse, die als Teil von GDI vorhanden ist. Das zugrunde liegende allgemeine Steuerelement zeichnet sich auf zwei Arten abhängig davon, ob visuelle Stile für die Anwendung aktiviert sind. Um die Zeichnung zu überschreiben, müssen Sie die gesamte Zeichnung selbst ausführen. Sie können dem Steuerelement nicht mitteilen, dass Sie nur die Schaltflächen oder den Rahmen außer Kraft setzen möchten.

Das Ausführen der gesamten Zeichnung ist viel schwieriger als es klingt. Entschuldigung, ich kann keine einfache Lösung anbieten, aber ich denke nicht, dass es eine einfache Lösung gibt.

+0

Ich möchte die ganze Zeichnung selbst machen, aber ich möchte die Methoden des ToolStripRenderer dazu verwenden. – Simon