2016-06-22 16 views
0

Ich verwende Windows Forms.C# Wie gruppiert man verschiedene Form Controls zusammen?

Ich habe nur einen Rahmen. In diesem Frame habe ich einige Controls zusammen organisiert. Wo die Controls in einer Zeile zusammengehören (sie bilden ein Objekt). Und insgesamt habe ich fünf dieser Zeilen mit den gleichen Controls.

Eg .: Name, Vorname, Alter, Einkommen, etc. (in einer Reihe) Es gibt Dropdownlists, Ankreuzfelder, NumicUpDown, etc

würde ich jetzt brauche eine Art und Weise zu "binden", um sie zusammen zu kennen. Das Gleiche gilt für die Events. Denn im Moment würde ich für jedes andere Control ein Event machen und es dann mit einer Nummer am Ende des Controls-Namens abgrenzen, was ziemlich ärgerlich wäre. Und dann daraus das Objekt generieren.

Wie muss ich nicht Dutzende von Events erstellen und angeben, dass alles in einer Zeile zusammen gehört?

+2

Erfinden Sie nicht Ihre eigene Gittersteuerung. Wenn Sie DataGridView nicht mögen, gehen Sie einkaufen. –

Antwort

0

Zum Gruppieren sie zusammen auf dem Formular (nicht Frame) - setzen Sie sie alle auf ein Panel.

Um den gleichen geraden Handler für alle zu verwenden - abonnieren Sie einfach denselben. (Mit dem Designer - wählen Sie die Ereignisse, und wählen Sie aus der Dropdown-Liste. Um dies aus dem Code tun - einfach YourControl2.EventName += YourControl1.EventName.) Beachten Sie, dass dies nicht für jede Art von Control und jedes Ereignis möglich ist. Dies ist nur möglich, wenn die Ereignisse die gleiche Signatur haben.

+0

Tut mir leid, wenn ich zu unspezifisch war, aber genau das wollte ich nicht machen. Damit müsste ich zwischen den "Zeilen" und auch zwischen den verschiedenen Controls in einer Zeile unterscheiden. Oder bin ich irgendwo falsch? ... – EsoMoa

+0

@EsoMoa Ich verstehe nicht genau was du sagst. Lasst uns eins nach dem anderen nehmen - was meinst du mit 'Ich müsste zwischen den" Reihen "unterscheiden? – ispiro

0

Sie können einfach ein UserControl erstellen. Klicken Sie mit der rechten Maustaste auf das Projekt oder einen Ordner im Projekt, und wählen Sie UserControl. Sie können dann im Designer genau wie für Formulare Steuerelemente hinzufügen.

Sobald Sie das Projekt kompiliert haben, wird Ihr Benutzersteuerelement oben in der Toolbox angezeigt und Sie können es per Drag & Drop auf ein Formular ziehen.

So erstellen würde ein Benutzersteuerelement, das eine Zeile darstellt, und fügen Sie eine von ihnen für jede Zeile zu Ihrem Formular hinzu. Sie können Ihrer Benutzersteuerungsklasse auch zusätzliche Eigenschaften, Methoden und Ereignisse hinzufügen. Sie werden automatisch im Eigenschaftenfenster angezeigt.


Aber in Ihrem Fall wäre ein DataRepeater Control for Windows Forms angemessen. Es ist Teil der Visual Basic Power Packs, funktioniert aber auch in C# -Projekten.

+0

Danke, für die Idee des eigenen UserControl, habe ich nicht darüber nachgedacht. Aber wäre da nicht das gleiche Problem wie oben beschrieben? Ich würde ein einzelnes Event pro UserControl hinzufügen und dann würde ich innerhalb dieses Events zwischen den verschiedenen Controls unterscheiden müssen. Ist es nicht das Gleiche, nur dass es "sauberer" ist? – EsoMoa

+0

Es ist sauberer, einige Rastersteuerelemente zu verwenden, die einige Datenbindungsmechanismen verwenden. Erstellen Sie eine Klasse mit Eigenschaften, die die Spalten des Rasters bilden. Bindet eine Liste von Objekten dieser Klasse an das Grid und in den Events erhält das aktuelle Element mit 'grid.SelectedItem',' grid.FocusedItem' oder was auch immer das Grid bereitstellt. Gute Grid-Controls ermöglichen die Verwendung von Dropdowns, Checkboxen usw. –

+0

Der Datenrepeater hat eine 'CurrentItem'-Eigenschaft für den gleichen Zweck. –