timer problem - c# .net



  • Hallo!

    Ich habe 2 Forms. Eins ist der MdiParent und das andere das MdiChildren. Jetzt möchte ich aus dem MdiParent auf den timer im MdiChildren zugreifen.

    Das ist derzeit mein Ansatz

    private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form mySubForm = this.MdiChildren[0];
    
                Timer timer1 = (Timer)spielfeld.Container.Components["timer1"];
                timer1.Stop();
    

    Allerdings bekomme ich so eine System.NullReferenceException.

    Kennt jmd von euch einen (besseren) anderen Weg?

    Grüße chris



  • ups hab grad selber einen fehler entdeckt, allerdings besteht das Problem weiterhin

    private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form mySubForm = this.MdiChildren[0];
    
                Timer timer1 = (Timer)mySubForm.Container.Components["timer1"];
                timer1.Stop();
    


  • Erstelle mal in mysubform (oder wie das jetzt hies) eine Methode StopTimer und rufe diese Methode auf. Innerhalb der Methode stoppe den Timer.

    Schaut besser aus - und ist sicherer. Man sollte nicht in privaten Feldern rumbasteln.

    Um zu schauen wo denn die null herkommt, zerlege Deinen Ausdruck und weise die Ergebnisse einer Variablen zu, die Du auf null prüfst.Dann siehst Du durch welchen der Aufrufe null zurückgegeben wird.



  • timer must Du mit new erzeugen, ist das hier der Fall?



  • will ja kein klugscheißer sein, aber soweit ich das mitbekommen hab, hast du nur eine subform. children ist aber plural. es müsste also MdiChild heißen 😉



  • PferdAmHerd schrieb:

    will ja kein klugscheißer sein, aber soweit ich das mitbekommen hab, hast du nur eine subform. children ist aber plural. es müsste also MdiChild heißen 😉

    a) MdiChild gibt es nicht
    b) MdiChildren[0] liefert nur ein child zurück, somit klärt sich die Frage, warum es kein MdiChild gibt

    Ich glaube das ist dann geklärt 😉

    Habe das Problem jetzt anders gelöst: Ich hab den Timer jetzt doch in die Hauptform integriert, geht genauso gut.

    Danke trotzdem für eure Hilfestellung!


Anmelden zum Antworten