2009-04-27 10 views
2

(Dies ist wahrscheinlich eine dumme Frage UND eine WTF kombiniert, aber hier geht nichts)Was ist das "leichteste" winforms Steuerelement?

Ich möchte Linien oder Bereiche in meiner Schnittstelle zeichnen - in der Regel Trennzeichen in einem TableLayoutPanel. Momentan mache ich nur ein Panel in der Reihe und setze es auf Dock = Fill und gebe ihm die Hintergrundfarbe.

Kurz bevor ich das gleiche machte, fragte ich mich, ob ein anderes Steuerelement (Label?) Leichter sein könnte. Oder vielleicht sollte ich einfach meine eigenen rollen, indem ich von Control erbte?

Irgendwelche anderen Lösungen?

Antwort

7

würde ich von Control erben und erstellen Sie Ihre eigenen, wie alle anderen Bedienelemente Label und Panel direkt oder indirekt erben von Control einschließlich. Dies ermöglicht Ihnen auch, die Funktionalität getrennt von den anderen zu kapseln.

Ich denke auch, Sie könnten auch das Paint Ereignis für Ihre TableLayoutPanel überschreiben, oder erben von diesem, machen Sie es zu Ihrer eigenen und zeichnen Sie die Zeilen.

+0

Ich ging mit diesem am Ende. Ich verwende TableLayoutPanel speziell, um zu vermeiden, dass man sich bei der Größenänderung in die schmutzigen Details der Pixelpositionen begeben muss. – Benjol

0

Warum möchten Sie Ihre eigenen schreiben? Dies scheint mir eine vorzeitige Optimierung zu sein. Außerdem müssen Sie definieren, was Sie unter Leichtbau, Speicherauslastung, Prozessorzyklen usw. verstehen. Wenn Sie wirklich um die Leistung besorgt sind, würde ich die Kontrolle übernehmen, aber ich würde diesen Weg nicht gehen, wenn Ihre aktuelle Lösung nicht getestet wird Ich arbeite aus irgendeinem Grund nicht.

+0

Ich denke du magst Recht haben, aber ein Steuerelement namens 'LineFiller' sollte zukünftige Entwickler (einschließlich mir) davon abhalten, "WTF ein Label 2 Pixel hoch ?!" – Benjol

1

Ich würde mir die Klasse ControlPaint ansehen, die several methods hat, um Linien usw. zu zeichnen, die speziell darauf ausgerichtet sind, systemähnliche Linien zu zeichnen. Überschreiben Sie das Paint-Ereignis oder erben Sie es, wie Daniel sagt, und zeichnen Sie die Linien dort hinein.

1

Hier ist eine Out-of-the-Box-Lösung von Microsoft.

Auschecken Visual Basic PowerPack 3.0. Sorgen Sie sich nicht zu sehr um den Namen - das sind Komponenten aus dem Visual Basic-Team, aber sie funktionieren auch gut für C# -Entwickler.

Eine der enthaltenen Komponenten ist LineShape, die genau das leistet, was Sie von diesem Namen erwarten würden.

Wenn Sie auf frühere Versionen des Frameworks abzielen, können Sie die Assembly in Ihre Anwendung aufnehmen. Wenn Sie jedoch 3.5 SP1 oder höher verwenden, ist das Powerpack enthalten.

Verwandte Themen