Load Event einer anderen Form aufrufen

exiter28

Erfahrenes Mitglied
Hallo,

ich bin seit ca. 3 Wochen von VB.NET nach C# umgestiegen.
Nun hab ich noch ein paar Startschwierigkeiten....

in VB.NET konnte man ziemlich einfache das Load Event einer anderen Form
aufrufen. Beispiel:

beim Schließen der Form2 soll das Load Event der Form1 aufgerufen werden.
Der einfachste Weg war hier, das Event auf public zu stellen, dann klappte das
auch.

In C# geht das anscheinend nicht so einfach?

habt Ihr einen Tipp für mich: u.s. der Codeausschnit der MDIParent Form (LoadEvent)
und im 2 Abschnitt das ClosingEvent der Options Form. Könntet Ihr mir einen Tipp
geben, was ich da machen muss?

Code:
        public void MDIParent1_Load(object sender, EventArgs e)
        {
            string enc;
            IniClass.array();
            IniClass.createfile();
            x = this.Size.Width - 20;
            y = this.Size.Height - 110;
            IniClass.arraybg = IniClass.FileToArray(IniClass.inifile);
            enc = IniClass.arraybg[13];
            if (enc == "")
            {
                userpasswd = "";
                toolStripStatusLabel3.Visible = true;
            }
            else
            {
                userpasswd = EncodeClass.DecryptMessage(IniClass.arraybg[13], systempasswd);
                toolStripStatusLabel2.Visible = true;
            }            
        }

Code:
        private void Options_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

Dank Euch schon mal!
 

Nico Graichen

Erfahrenes Mitglied
Hi

Was du da hast ist eine Methode, keine Event! Ein Event wird ausgelöst und zudem anders deklariert.
Die Methode wird über einen EventHandler an das Event "gebunden" um dieses zu behandeln.

zu deiner Frage:
Pack den Code in einen weitere Methode, die du als Public markierst und rufst dann diese da auf, wo du sie benötigst (also im Load, Closed, außerhalb, ...)
 

exiter28

Erfahrenes Mitglied
Hallo Nico,

das funktioniert aber nur soweit, wenn ich von der MDIParent Form keine anderen Objekte verwenden möchte. Also z.B.: das Label. Ich müsste dann in der neuen Methode ein neues Label zuweisen.
Was auch funktioniert. So lange es nur das eine Label wäre, ist die Lösung auch OK, aber bei
mehreren Objekten müsste ich auch diese alle neu zuweisen.

Ich Dank Dir aber trotzdem!
 

exiter28

Erfahrenes Mitglied
also ich meine z.B.: das toolStripStatusLabel3 aus der MDIParent. Dies wird dann als nicht zugewiesen
markiert. Ich muss also mit Label toolStripStatusLabel3 = new toolStripStatusLabel(); generieren.
 

Nico Graichen

Erfahrenes Mitglied
HALT!
Damit erzeugst du ein neues Label und nutzt nicht das bestehende!
Kann es sein, dass du deine Methode an der falschen Stelle definiert hast?
 

exiter28

Erfahrenes Mitglied
jetzt muss ich das Thema leider noch mal aufmachen...

@Nico
wie meinst Du das, an einer falschen Stelle?
könntest Du mir evtl. ein konkretes Beispiel zeigen?

Danke!
 

Nico Graichen

Erfahrenes Mitglied
Hi

Ui! *imgedächtnisrumkram*
Ich glaube ich meinte in der falschen Klasse (Form). Die Methode muss in der Form implementiert sein, in der auch das Label ist
 

exiter28

Erfahrenes Mitglied
Hi Nico!

die Methode ist in der Form implementiert. Aber sobald ich diese auf public static setze,
müsste ich die Objekte (Labels) neu zuweisen....
Ich komm da einfach nicht dahinter.
 

Nico Graichen

Erfahrenes Mitglied
Ich wüsste beim besten Willen nicht wieso man die Referenzen neu setzen müsste!
Wo sind die Labels? Wo ist die Methode? Wie ist sie implementiert?

PS: Hohe Latenz, hier ^^