2008-08-26 21 views
4

In unserem Projekt SharpWired versuchen wir, eine Download-Komponente zu erstellen, die den Download-Fenstern in Firefox oder Safari ähnelt. Das heißt, eine einzelne Top-Down-Liste von Downloads, bei denen es sich um benutzerdefinierte Steuerelemente mit Fortschrittsbalken, Schaltflächen und anderen Elementen handelt.Dynamische Top-down-Liste von Steuerelementen in WindowsForms und C#?

Die Anforderungen sind, dass es eine einzige Liste mit einem Element in jeder Zeile geben sollte. Jedes Element muss ein benutzerdefiniertes Steuerelement sein. Die gesamte Liste sollte dynamisch skalierbar sein, sodass die Liste bei Bedarf eine Bildlaufleiste enthält, wenn Sie sie länger/kürzer machen. Wenn Sie sie schmaler/breiter machen, sollten die benutzerdefinierten Steuerelemente an die Breite der Liste angepasst werden.

Wir haben versucht, eine FlowLayoutPanel verwenden, aber haben nicht Größe ändern, um so zu arbeiten, wie wir wollen. Vorzugsweise sollten wir nur die Verankerung der benutzerdefinierten Steuerelemente auf Links & Rechts festlegen müssen. Wir haben auch über die Verwendung einer TableLayoutPanel nachgedacht, aber gefunden, Zeilen dynamisch zu addieren, um ein zu großer Aufwand zu sein.

Dies muss ein ziemlich häufiger Anwendungsfall sein, und es scheint ein bisschen komisch für mich, dass die FlowLayoutPanel keine intuitive Möglichkeit hat, dies zu tun. Hat jemand etwas Ähnliches getan oder haben Sie Tipps oder Tricks, um uns in Fahrt zu bringen?

Prost!
/Adam

Antwort

2

Wenn Sie möchten, Datenbindung nicht verwenden (über die DataRepeater Steuerung, wie oben erwähnt), könnten Sie eine regelmäßige Panel Steuerung nutzen und dessen AutoScroll Eigenschaft auf true (Bildlaufleisten zu ermöglichen).

Dann könnten Sie Ihre benutzerdefinierten Steuerelemente manuell hinzufügen und die Dock-Eigenschaft von jedem auf Top festlegen.

+0

Das haben wir gemacht. Die Datenbindungslösung ist viel zu viel Aufwand für uns. –

1

.NET 3.5 SP1 eingeführt ein DataRepeater Windows Forms Steuerelement, das klingt, als würde es tun, was Sie wollen. Binden Sie es an die Liste der "Downloads" (oder was auch immer Ihre Liste darstellt) und passen Sie jedes Elementfenster so an, dass es die von Ihnen benötigten Steuerelemente enthält.

+0

Dieses Steuerelement befindet sich in VisualBasic Power Pack. Wie würde ich es in C# verwenden? –

+0

@Adam nein, es ist nur im VisualBasic-Namespace. Sie können es aus allen .NET-Sprachen verwenden, und es ist Teil des Frameworks ab .NET 3.5 SP1. –

+0

Soweit ich weiß, können Sie einfach auf die Baugruppe in Ihrer Lösung verweisen und die darin enthaltenen Methoden wie gewohnt verwenden. Die kompilierten .Net-Assemblys können nahtlos miteinander arbeiten. Natürlich habe ich keine spezifische Erfahrung dieser Versammlung, und ich kann nichts garantieren, was ich gerade in diesem Fall gesagt habe. :) – ZombieSheep

Verwandte Themen