Was ist der einfachste .NET-äquivalent zu einer VB6-control-Arrays?
Vielleicht weiß ich es einfach nicht .NET gut genug, aber ich habe noch zu sehen, eine zufrieden stellende Art und Weise der Umsetzung dieser einfachen VB6-code einfach in .NET (vorausgesetzt, dieser code ist auf eine form mit N Befehlsschaltflächen in der Reihe Command1() und N Textfelder im array Text1()):
Private Sub Command1_Click(Index As Integer)
Text1(Index).Text = Timer
End Sub
Ich weiß, es ist nicht sehr nützlich-code, aber es zeigt die Leichtigkeit, mit der Steuerelement-arrays verwendet werden können, die in VB6. Was ist die einfachste Entsprechung in C# oder VB.NET?
- Siehe auch stackoverflow.com/questions/5497403/control-array-in-vb-net und stackoverflow.com/questions/5738092/vb6-control-arrays-in-net
- Vielleicht könntest du überprüfen, in der Zukunft meine Idee: stackoverflow.com/questions/5738092/vb6-control-arrays-in-net/..., ich denke, es bietet eine Lösung für diese heikle Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen eine generische Liste von Textfeldern:
Andere nette Sache, VB .NET tut, ist mit einem einzigen Ereignis-handler, der behandelt mehrere Steuerelemente:
Gibt es keine real 1-zu-1 analog-in .Net. Sicher, Sie können arrays oder Listen von Kontrollen von einem bestimmten Typ, aber es gibt nichts, das tun, das für Sie automatisch.
Allerdings habe ich noch nie gesehen, dass ein control-array, das konnte nicht umgestaltet werden in .Net, um etwas besser. Ein Fall in Punkt ist dein Beispiel. In dem Szenario, das du gepostet hast, bist du mit control-arrays, um ein paar button-up mit einem Textfeld. In .Net, Sie würde wahrscheinlich tun Sie dies mit einem custom control. Das benutzerdefinierte Steuerelement würde darin bestehen, eine Schaltfläche, ein Textfeld, und vielleicht eine freigegebene/statische timer. Das Formular verwendet mehrere Instanzen dieses benutzerdefinierte Steuerelement. Sie implementieren die Logik, die erforderlich ist für die Kontrolle einmal, und es ist isoliert, um es in den eigenen source-Datei, die verfolgt werden kann und bearbeitet in der source-control, ohne dass ein verschmelzen mit der größeren form-Klasse, oder einfach wieder verwendet, die auf mehrere Formulare oder sogar in mehreren Projekten. Sie müssen sich also keine sorgen darüber machen, dass der Befehl-Taste index-übereinstimmungen mit dem textbox-index.
Mit einem benutzerdefinierten Steuerelement für diese statt ein control-array ist in etwa Analog mit Klasse zum gruppieren von Daten anstelle von einem array, in das Sie bekommen Namen statt Indizes.
Gibt es zwei Aspekte.
.NET bereitwillig unterstützt arrays von Steuerelementen VB6 einfach nutzen musste ein workaround, weil andernfalls die Verkabelung bis events war wirklich hart. In .NET, Kabel, Ereignisse dynamisch ist einfach.
Jedoch, die .NET Formular-designer unterstützt keine control-arrays aus einem einfachen Grund: arrays von Steuerelementen erstellt/erweitert zur Laufzeit. Wenn Sie wissen, wie viele Kontrollen Sie müssen zur compile-Zeit (die Argumentation geht), dann geben Sie Ihnen unterschiedliche Namen und nicht setzen Sie Sie in einem array.
Das ist genau der Punkt. Warum haben Sie ein feature, wenn es nutzlos?
Falls erforderlich, können Sie auch Zugriff auf eine Steuerung durch den Namen, wodurch etwas wie dieses:
VisualBasic .NET-Kompatibilität-Bibliothek enthält eine stark typisierte control-arrays. Dies ist, was der upgrade-Assistent verwendet, um ersetzen Sie die aktuelle VB6-control-arrays.
Jedoch Ein array Steuerelement in VB6 ist nur eine Sammlung von Objekten mit VB6 zu tun die syntax der Magie auf der Oberfläche. In der .NET-Welt, entfernen Sie diese, Sie zwingen Praktiken zu verbessern.
Schließen, mit dem Aufkommen von Generika, es gibt nichts stoppen Sie von der Verwendung
Stellen Sie ein array von Steuerelementen.
Dasselbe click-Ereignis behandeln kann, der den Knopf drückt aus mehreren Schaltflächen .Net. Sie könnten dann fügen Sie das Textfeld zu finden, in der Tag-Eigenschaft?
Die beiden wichtigsten Vorteile des control-arrays in VB6 waren:
(1) Sie sind ein Weg für Sie zum Durchlaufen einer Auflistung von Steuerelementen
(2) Sie erlaubt, Sie zu teilen-Ereignisse zwischen den Kontrollen
(1) kann erreicht werden .Net unter Verwendung eines Arrays von Steuerelementen
(2) kann erreicht werden, indem ein Ereignis-handle für mehrere Steuerelemente (die syntax ist ein wenig anders, weil man die
sender
argument stattmyArray(index)
).Eine nette Sache über .Net ist, dass diese Funktionen entkoppelt sind. So zum Beispiel können Sie Steuerelemente, Ereignisse austauschen, selbst wenn Sie nicht Teil eines Arrays und verschiedene Namen haben und auch einen unterschiedlichen Typ haben. Und man kann die Iteration durch eine Auflistung von Steuerelementen, selbst wenn Sie völlig unterschiedliche Ereignisse.