myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Grundlagen von C# (https://www.mycsharp.de/wbb2/board.php?boardid=88)
--- Form-Objekte zur Laufzeit erstellen (https://www.mycsharp.de/wbb2/thread.php?threadid=121971)


Geschrieben von Matthiaß am 20.06.2019 um 15:12:
  Form-Objekte zur Laufzeit erstellen
Hallo,
Ich habe hier folgenden Experimentalcod:

C#-Code:
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.


Geschrieben von T-Virus am 20.06.2019 um 15:22:
 
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


Geschrieben von MrSparkle am 20.06.2019 um 16:15:
 
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#?


Geschrieben von Stefan.Haegele am 01.07.2019 um 07:25:
 
[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?


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 12.12.2019 10:01