Was ist das einfachste .NET-Äquivalent eines VB6-Steuerfelds?

8

Vielleicht weiß ich .NET noch nicht gut genug, aber ich habe noch keine befriedigende Möglichkeit gesehen, diesen einfachen VB6-Code einfach in .NET zu implementieren (angenommen, dieser Code befindet sich in einem Formular mit N CommandButtons im Array Command1 ( ) und N TextBoxes im Array Text1 ()):

%Vor%

Ich weiß, dass es kein sehr nützlicher Code ist, aber es zeigt die Leichtigkeit, mit der Control-Arrays in VB6 verwendet werden können. Was ist die einfachste Entsprechung in C # oder VB.NET?

    
raven 02.09.2008, 13:44
quelle

8 Antworten

5

Erstellen Sie eine allgemeine Liste von Textfeldern:

%Vor%     
Seb Nilsson 02.09.2008, 13:51
quelle
4

Eine andere nette Sache, die VB .NET macht, ist eine einzige Ereignisbehandlungsroutine, die mehrere Steuerelemente behandelt:

%Vor%     
Mark Biek 02.09.2008 13:49
quelle
3

Es gibt kein echtes 1 zu 1 Analog in .Net. Sicher, Sie können Arrays oder Listen mit Steuerelementen eines bestimmten Typs erstellen, aber nichts wird Ihnen das automatisch antun.

Ich habe jedoch noch nie ein Steuerelement-Array gesehen, das nicht in .Net zu etwas besser refaktoriert werden konnte. Ein Beispiel dafür ist Ihr Beispiel. In dem von Ihnen geposteten Szenario verwenden Sie Steuer-Arrays, um eine Schaltfläche mit einer Textbox zu verknüpfen. In .Net würden Sie dies wahrscheinlich mit einem benutzerdefinierten Steuerelement tun. Das benutzerdefinierte Steuerelement besteht aus einer Schaltfläche, einem Textfeld und möglicherweise einem freigegebenen / statischen Zeitgeber. Das Formular verwendet mehrere Instanzen dieses benutzerdefinierten Steuerelements. Sie implementieren die für die Steuerung benötigte Logik einmal und isolieren sie in ihrer eigenen Quelldatei, die in der Quellcodeverwaltung verfolgt und bearbeitet werden kann, ohne dass eine Zusammenführung mit der größeren Formularklasse erforderlich ist oder sie problemlos in mehreren Formularen oder sogar in mehreren Projekten wiederverwendet werden kann . Sie müssen sich auch keine Sorgen machen, dass der Befehlsschaltflächenindex mit dem Textfeldindex übereinstimmt.

Die Verwendung eines benutzerdefinierten Steuerelements anstelle eines Steuerelementarrays entspricht in etwa der Verwendung der Klasse zum Gruppieren von Daten anstelle eines Arrays, da Sie anstelle von Indizes Namen erhalten.

    
Joel Coehoorn 02.09.2008 14:11
quelle
2

Es gibt zwei Aspekte.

.NET unterstützt bereits Arrays von Steuerelementen, VB6 musste nur einen Workaround verwenden, da sonst die Verdrahtung von Ereignissen sehr schwierig war. In .NET ist das dynamische Verbinden von Ereignissen einfach.

Der .NET-Formular-Designer unterstützt jedoch keine Steuer-Arrays aus einem einfachen Grund: Arrays von Steuerelementen werden zur Laufzeit erstellt / erweitert. Wenn Sie wissen, wie viele Steuerelemente Sie zum Zeitpunkt der Kompilierung benötigen (die Argumentation lautet), geben Sie ihnen verschiedene Namen und fügen Sie sie nicht in ein Array ein.

  

Ich weiß, dass es kein sehr nützlicher Code ist

Genau darum geht es. Warum ein Feature, wenn es nutzlos ist?

Bei Bedarf können Sie auch auf ein Steuerelement über den Namen zugreifen, was in etwa so aussieht:

%Vor%     
Konrad Rudolph 02.09.2008 13:50
quelle
1

Die VisualBasic .NET-Kompatibilitätsbibliothek enthält stark typisierte Steuerelementarrays. Dies wird vom Aktualisierungsassistenten zum Ersetzen der aktuellen VB6-Steuerelementarrays verwendet.

Ein Steuerelement-Array in VB6 ist jedoch nur eine Sammlung von Objekten mit VB6, die einige Syntax-Zauber auf der Oberfläche ausführen. In der .NET-Welt zwingen sie, indem sie dies entfernen, zu besseren Praktiken.

Abschließend, mit dem Aufkommen von Generika, hält Sie nichts mehr davon ab,

zu verwenden %Vor%     
FlySwat 02.09.2008 13:50
quelle
0

Machen Sie ein Array von Steuerelementen.

%Vor%     
quelle
0

Dasselbe Klickereignis kann die Tastenbetätigungen von mehreren Schaltflächen in .Net verarbeiten. Sie könnten dann das Textfeld hinzufügen, das in der Eigenschaft Tag gefunden werden soll?

%Vor%     
samjudson 02.09.2008 13:54
quelle
0

Die zwei Hauptvorteile von Control Arrays in VB6 waren: (1) Sie haben eine Möglichkeit für Sie bereitgestellt, eine Reihe von Steuerelementen zu durchlaufen (2) Sie erlaubten Ihnen, Ereignisse zwischen Kontrollen zu teilen

(1) kann in .Net mit einem Array von Steuerelementen ausgeführt werden (2) kann erreicht werden, indem ein Ereignis mehrere Steuerelemente behandelt (die Syntax ist etwas anders, weil Sie das sender Argument anstelle von myArray(index) verwenden).

Eine nette Sache bei .Net ist, dass diese Funktionen entkoppelt sind. So können Sie zum Beispiel Steuerelemente haben, die Ereignisse teilen, selbst wenn sie nicht Teil eines Arrays sind und unterschiedliche Namen und sogar einen anderen Typ haben. Und Sie können eine Sammlung von Steuerelementen durchlaufen, auch wenn sie völlig unterschiedliche Ereignisse haben.

    
Tim Goodman 20.01.2010 05:20
quelle