Laden...

Form-Objekte zur Laufzeit erstellen

Erstellt von Matthiaß vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.303 Views
M
Matthiaß Themenstarter:in
2 Beiträge seit 2019
vor 4 Jahren
Form-Objekte zur Laufzeit erstellen

Hallo,
Ich habe hier folgenden Experimentalcod:


private void Button1_Click(object sender, EventArgs e)
        {
            Form Arbeitsblatt1 = new Form();
            Arbeitsblatt1.Show(this);
            Form Arbeitsblatt2 = new Form();
            Arbeitsblatt2.Show(this);
            // usw.
        }

Dieser Cod ist für meien Zweck zu starr.
Ziel ist es einen Cod zu schreiben in dem die Namen der Formulare erst während der Laufzeit
generiert werden d.h., : Sie sollten selbst Variablen sein und wärend der Laufzeit je nach Erfordernis
erzeugt oder gecancelt werden. Ich habe versucht diese Objekte in einen Array zu packen, aber das
quittiert der Compiler mit " Indizierung kann mit [] nicht auf den Typ Form angewendet werden."
Kurz, das Ganze soll ungefähr so funktionieren wie Worksheets unter VBA-Excel.
Gruß Ma.

Ma.

T
2.219 Beiträge seit 2008
vor 4 Jahren

Klingt auch eher nach einem Ansatz über Dictionary<string, Form> o.ä.
Dann kannst du das Dictionary als Lookup Table verwenden um zu schauen ob ein Form mit dem Namen bereits vorhanden ist.
Das ganze solltest du dann aber sauber in einer Klasse Wrappen, dass sich dann um das handling der Forms über ihren Namen kümmert.
Sonst verwurstest du dir deinen Code.

Keine Ahnung wie dein Array Ansatz aussah, vermutlich wolltest du anstelle des Index einfach das Form übergeben.
Macht bei Arrays in C# und vielen Sprachen keinen Sinn.
In JS wäre dies dann eine HashMap, die C# dir über Dictionary anbietet.
Alternativ kannst du auch direkt ein HashSet verwenden und prüfen ob deine Form Instanz vorhanden ist.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

5.657 Beiträge seit 2006
vor 4 Jahren

C# ist nicht VBA. Siehe dazu:

[FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls
[FAQ] Kommunikation von 2 Forms

PS: Wenn man eine andere Sprache lernen will, ist es sinnvoll, sich erstmal mit den Grundlagen zu beschäftigen, sonst ist Frustration vorprogrammiert (no pun intended): [FAQ] Wie finde ich den Einstieg in C#?

Weeks of programming can save you hours of planning

463 Beiträge seit 2009
vor 4 Jahren

[110% OffTopic]
Da du ja öfters das Wort Cod benutzt - es heißt Code... Für viele eine Kleinigkeit - für mich gehört es jedoch zum Gesamtbild dazu - und ich nehme nicht an, dass du Call of Duty meintest, oder?