Array aus verschiedenen Formularen

MAN

Erfahrenes Mitglied
Hallo,

besteht die Möglichkeit, ein Array aus mehreren verschiedenen Formularen zu bauen?

Sprich, ich habe folgendes:

Code:
public static frmMain m_cFrmMain = new frmMain();
public static frmSub1 m_cFrmSub1 = new frmSub1();
public static frmSub2 m_cFrmSub2 = new frmSub2();
Diese Formulare will ich eben in ein Array rein haben:
Code:
public static formType m_cAllForms[3];
m_cAllForms[0] = new frmMain();
m_cAllForms[1] = new frmSub1();
m_cAllForms[2] = new frmSub2();
Was aber gebe ich jetzt bei dem Typen des Arrays an ("formType") ?

Bin dankbar für jede Lösung oder Lösungsansatz!

mfG,
MAN
 
Hi,

wenn die Forms alle von "Form" vereerbt sind dann waere das auch dein Datetyp, denke ich mal.

Code:
Form[] forms = new Form[3];
forms[0] = new frmMain();
froms[1] = new frmSub1();
forms[2] = new frmSub2();

Beim Aufruf muesstest du dein ArrayItem noch casten:
Code:
((frmMain)forms[0]).frmMainProperty
 
Zuletzt bearbeitet:
Stimmt!

Jetzt gibt es aber leider noch ein anderes Problem - ich kann das nicht so programmieren, da kommen dann mehrere Fehler, wie z.B.:

Class, struct, or interface method must have a return type

gezeigt wird auf:

forms[0] = new frmMain(); <= auf frmMain


mfG,
MAN
 
Verstehe das leider nicht so ganz, habe jetzt folgendes:

Code:
public static Form[] forms = new Form();
((frmMain)forms[0]).frmMainProperty = new frmMain();
Oder wie hättest du das gedacht?

mfG,
MAN
 
Hi,

Code:
//                achtung eckige Klammer!
Form[] forms = new Form[3];
forms[0] = new frmMain();

war schon richtig. Wenn du jetzt aber Properties und Methoden aufrufen willst die nur in der frmMain Form vorhanden sind, dann muesstest du es casten. Das liegt daran das dein Array vom Typ "Form" ist und dieser Klasse natuerlich die Member deiner frmMain nicht bekannt sind.

Diese Member muesstest du dann so aufrufen:
Code:
string name = ((frmMain)forms[0]).MyFrmMainName;
// oder
((frmMain)forms[0]).MethodeVonFrmMain();
das hab ich eigentlich mit der einen Zeile gemeint

Wieso jetzt aber bei dir dieser Fehler kommt weiß ich auch nicht
 
Zuletzt bearbeitet:
Hm... wie gesagt, bei mir kommt dann der Fehler wie oben beschrieben:

Class, struct, or interface method must have a return type

gezeigt wird auf "frmMain":

forms[0] = new frmMain();

frmMain ist ein Formular welches von der Klasse Form abgeleitet ist ("public class frmMain : System.Windows.Forms.Form").

frmMain hat auch einen Konstruktor:

Code:
public frmMain()
{
	InitializeComponent();
}
Falls das noch zur Lösungssuche weiterhilft (da sich die Fehlermeldung ja anscheinend auf einen Return-Wert vom Konstruktor bezieht...)

Die Initialisierung von "forms[0] = new frmMain();" wird in einer eigenen Klasse aufgerufen. Diese ist in keiner Weise von der Klasse frmMain abhängig. Liegt da vielleicht schon der Fehler?

Vielen Dank für weitere Lösungsansätze!


mfG,
MAN
 
Zuletzt bearbeitet:
Problem gelöst!

War ein ganz blöder Fehler von mir, und zwar hatte ich die Initialisierungen global in einer Klasse vornehmen wollen - aber das kann ja gar nicht gehen!

Somit hatt ich mir noch ne Funktion drumrum geschrieben und es klappte!

Trotzdem vielen Dank für all die Mühe!

mfG,
MAN
 
Zurück