Macht eine indizierte Steuerelement-array?
C# indiziert control-arrays-oder nicht? Ich würde gerne ein "button array" zum Beispiel mit 5 Tasten, die nur einen event-handler, die Griffe der index aller dieser 5-Steuerelemente (wie VB6 tut). Muss ich sonst schreiben Sie für jede dieser 5 Tasten, einen extra-event-handler. Und wenn ich 100 Tasten, ich brauche 100 event-Handler? Ich meine sowas:
TextBox1[i].Text="Example";
Könnte es codieren definitiv einfacher für mich, die Arbeit mit den control-arrays. Jetzt habe ich gesehen, dass C# hat zumindest keine sichtbaren array-Funktionen, die auf user-controls und kein "index" - Eigenschaft auf die Benutzer steuert. Also ich denke mal C# hat keine control-arrays, oder muss ich jedes element nennen von bekannten Namen.
Anstatt 100 Textfelder in einer for-Schleife 100 erhöht Werte, muss ich schreiben:
TextBox1.Text = Value1;
TextBox2.Text = Value2;
...
...
TextBox100.Text = Value100;
Viel mehr Arbeit + alle diese 100 event-Handler für jeweils ein zusätzliches Textfeld extra.
- Jeder Elternteil control hat eine Eigenschaft
.Controls
, die Zugang zu einer Sammlung von untergeordneten Steuerelementen. Wenn Sie alle Ihre Textfelder/buttons innerhalb des gleichen übergeordneten Containers können Sie auf Ihnen durch die untergeordneten Steuerelemente Liste. - Sie weisen die gleichen event-handler, um mehrere Steuerelemente, die Sie nicht brauchen zu erstellen eine neue event-handler-Implementierung für jede control-Instanz.
- Du kannst etwas Glück Implementierung von ICollection<T>, wo T : Steuern, aber Sie können nicht fügen Sie einen Ereignishandler für ein array.
- Konnte nicht platzieren Sie alle Steuerelemente in einem array unter Verwendung von reflektion ab (einmal) und dann verwenden Sie es als ein array danach? Natürlich - wenn man nur nach den event-Handler gibt es andere Möglichkeiten, wie vorgeschlagen.
- Die Belastung eines Benutzers ausgesetzt, um eine UI-Katastrophe mit hundert text-Boxen, die wiederholt werden muss, richtig abgestimmt mit dem Fegefeuer ein Programmierer verdient für eine. Seine nur fair.
- Könnten Sie sagen, mehr -, warum alle Ihre Steuerelemente müssen die gleichen event-handler?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ich bereits im Kommentar zu einer Lösung von HatSoft, C# Winforms können Sie nicht zum erstellen von Steuerelement-arrays, wie in alten VB6 uns erlaubt. Die nächste ich denke, wir bekommen können, ist das, was HatSoft und Bert Evans in Ihren Beiträgen gezeigt haben.
Einzige, was ich hoffe, würde befriedigen Ihre Anforderung ist der event-handler, Sie bekommen ein gemeinsames event-handler und das event-handler, wenn Sie typecast der "Absender" erhalten Sie die direkte Kontrolle wie in VB6
C#
VB6
Also die einzige Schwierigkeit, die Sie haben könnten, ist die Verdrahtung die, die 100 Textfelder zu einem einzigen Ereignis-handler, falls Sie nicht erstellen Sie die Steuerelemente dynamisch über den code, sondern erstellen Sie es manuell zur design-Zeit, dann kann man ja vorschlagen, gruppieren Sie Sie in einem container wie-sagen wir mal-Panel. Dann Laden der Form Draht Sie alle bis auf ein einzelnes Ereignis-handler wie diese:
Ich weiß, ich bin ein wenig spät zu dieser party, aber diese Lösung funktioniert:
Einen globalen array:
Dann in das Objekt-Konstruktor nach dem Aufruf von
initialize array:
Nun können Sie Durchlaufen das array von Steuerelementen:
Ich hoffe, das hilft!
Pete
Erstellen Sie einfach einen handler und zeigen Sie alle Tasten, um es.
Alternativ, wenn Sie sind erstellen von Steuerelementen im code, die Sie nutzen könnten eine der Techniken angegeben, die in dieser Antwort.
Wenn Sie das arbeiten mit Web Forms und nicht MVC, können Sie acces eine Sammlung von Steuerelementen auf der Seite, wie gezeigt, in Mithilfe der Controls-Auflistung in einer ASP.NET Web-Seite. Im wesentlichen die controls-Auflistung ist ein Baum, der die Seite hostet die erste Ebene der untergeordneten Steuerelemente und einige Elemente haben eigene Kinder. Sehen Gewusst wie: Suchen in das Web Forms-Steuerelemente auf einer Seite zu Fuß die Controls-Auflistung für ein Beispiel, wie man den Baum.
Finden Sie auch unter Gewusst wie: Hinzufügen von Steuerelementen zu einem ASP.NET Web-Seite Programmgesteuert.
Können Sie die gleichen event-handler für mehrere Objekte, solange die Unterschrift erforderlich ist, ist die gleiche.
Für Windows Forms-dies ist nahezu identisch, da Sie basierend auf ähnliche architektonische Modelle, aber Sie wollen Kontrolle.Controls-Eigenschaft und Vorgehensweise: Hinzufügen von Steuerelementen zu Windows Forms.
Andere Sache zu beachten: wenn Sie wirklich brauchen, zu Bearbeiten 100 Saiten auf einem Formular, sollten Sie vielleicht darüber nachdenken, ob 100 text-Boxen ist wirklich der beste Weg, es zu tun. Vielleicht ist ein ListView, DataGridView, oder "PropertyGrid" wäre besser geeignet.
Gilt dies fast jedes mal, wenn Sie denken, Sie brauchen eine riesige Auswahl von Bedienelemente.
Halten es einfach: