2010-09-16 8 views
12

Ich baue ein Steuerelement, das 15x15 = 225 Schaltflächen umfasst und in der Größe veränderbar sein muss. Da es sich um ein Gitter handelt, funktioniert das Ankern und Andocken nicht. Ich habe sowohl TableLayoutPanel ausprobiert als auch das resize -Ereignis behandelt, um Steuerelemente manuell zu platzieren und zu vergrößern. In beiden Fällen ist die Größenänderung inakzeptabel langsam. Suspend/Resume Layout in der Größenänderungsfunktion, wenn ich das Layout manuell bearbeite, hilft nicht.C# Winforms: Effiziente Anzeige vieler Steuerelemente

Gibt es etwas Grundlegendes, das ich ändern kann, um die Dinge zu beschleunigen, oder ist dies nur eine Einschränkung der nativen Steuerelemente? Ich verstehe, dass ich ein benutzerdefiniertes Steuerelement von Grund auf neu erstellen kann, die Klicks handhabe und mich selbst male - obwohl ich lieber mit den nativen Steuerelementen bleiben würde, wenn das möglich ist.

bearbeiten

Ich weiß, dass es viele Tasten ist. Meine Frage ist eine technische Frage. nicht eine über UI-Design.

+2

Das ist eine verdammt viele Tasten. Für was zum Teufel brauchst du so viele Knöpfe? –

+0

+1 zu Alastair Pitts. Wir sollten vermeiden, dass so viele Buttons auf der GUI erscheinen. Ich denke, die Endnutzer stimmen mir auch zu. –

+0

Profilieren Sie die Anwendung während der Größenänderung, um zu sehen, warum es so lange dauert. –

Antwort

6

WinForms kann leider nicht diese vielen Steuerelemente gleichzeitig anzeigen.

Wenn ich in Ihrer Situation wäre, würde ich zuerst überlegen, ob ich das Formular in mehrere Seiten aufteilen könnte. In vielen Fällen wäre dies auch für den Benutzer einfacher zu verstehen.

Aber in Ihrem Fall scheint das keine Option zu sein. Machst du so etwas wie ein Minesweeper-Spiel? Dort haben Sie ein Raster von Schaltflächen, die alle anklickbar sind. In einer solchen Situation würde ich vorschlagen, dass Sie für einen benutzerdefinierten Besitzer Steuerelement gezogen, wo Sie alle Schaltflächen in einem Steuerelement zusammenführen. Erstellen Sie kein Composite-Steuerelement, das 225 Schaltflächen enthält - das hilft überhaupt nicht :-)

Eine letzte Option könnte sein, zu WPF zu wechseln. WPF verwendet hardwarebeschleunigtes Rendering, so dass es schneller sein kann, aber mit so vielen Steuerelementen kann nicht einmal das helfen.

+0

Gotcha. Kannst du mich auf etwas hinweisen, das darüber hinaus geht "kann einfach nicht damit umgehen" - gibt es irgendwo einen Blogpost/eine Performance-Erklärung, die mir helfen kann zu verstehen, was die Dinge zum Sterben bringt? +1, um nicht zu versuchen, die technische Frage zu umgehen. Ich weiß, dass es viele Knöpfe sind und ich verstehe das. Benutzerdefinierte Steuerung ist es. – phillipwei

+0

Ich spreche hier aus eigener Erfahrung :-) Viel besser als jeder Blogpost ... hehe. –

+0

Nein wirklich. Ich habe versucht, ähnliche Sachen zu machen und endete mit einer völlig unbrauchbaren Form. Die Leistung ist bis zu einem gewissen Punkt in Ordnung, wo es zusammenbricht. Vielleicht können Sie mit einem 10x10 Gitter, vielleicht 12x12 oder 8x8, durchkommen, aber an einem bestimmten Punkt wird es unbrauchbar. –

Verwandte Themen