Visual Basic 2010 Timer aus fremder Klasse starten

...komplette Frage anzeigen

1 Antwort

Angenommen, es gibt in deinem Projekt 2 Forms, eines mit Namen Form1, ein weiteres mit Namen Form2. In Form2 befindet sich ein Timer mit Namen Timer1. Form2 bekommt eine öffentliche Funktion, mit der der Timer gestartet werden kann. In Form1 wird ein Button geklickt, der Form2 öffnet und die Funktion zum Start des Timers aufruft. Der Code wäre wie folgt:

Die öffentliche Funktion in Form2:

Public Sub StartTimer()
    Timer1.Start()
End Sub

Die Funktion Button_Click in Form1:

Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
    Dim frm2 As New Form2
    frm2.Show()
    frm2.StartTimer()
End Sub

Das war alles! Indem du eine modulare Variable in Form1 für die Instanz von Form2 anlegen würdest, könntest du den Start des Timers auch in anderen Bereichen von Form1 ausführen, solange denn ein Form2 vorhanden ist. Im folgenden Code sind zwei Buttons vorhanden, einer zum Anzeigen von Form2, ein anderer, um den Timer zu starten:

Dim m_frm2 As Form2

Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
    m_frm2 = New Form2
    m_frm2.Show()
End Sub

Private Sub btnTest2_Click(sender As System.Object, e As System.EventArgs) Handles btnTest2.Click
    If m_frm2 IsNot Nothing Then
        m_frm2.StartTimer()
    End If
End Sub

Viel Erfolg weiterhin!

Antwort bewerten Vielen Dank für Deine Bewertung
Toraka 24.03.2014, 14:44

Und!? Wie ist es gelaufen? Hast du es hinbekommen?

Ein Feedback für die Mühe wäre ganz nett!

0
Timiwas 04.05.2014, 17:03
@Toraka

Wow, vielen Dank! Du hast das sehr gut erklärt und bestimmt viel Zeit reininvestiert, aber leider klappt es bei mir trotzdem nicht. Ich hab alles genauso gemacht und bestimmt ne Stunde rumprobiert aber es will nicht und es gibt nichtmal ne Fehlermeldung. Also das Spiel läuft danach ganz normal weiter, aber der Timer starten eben einfach nicht, sonst funktioniert wieder alles :'(

0
Timiwas 04.05.2014, 17:09
@Timiwas

bzw. mir fällt auf das du bei der Button_Click funktion hinter dem btnTest_click in den klammern kein "byval" stehen hast. bei mir wird das aber immer automatisch hinzugefügt und lässt sich nicht löschen.

0
Toraka 04.05.2014, 22:33
@Timiwas

Daran wird es nicht liegen. Er führt doch den Inhalt der Funktion aus, das ist die Hauptsache. Es passiert nichts? Das Form2 wird nicht angezeigt? Oder erscheint es, vielleicht verzögert? Dann wird der Inhalt der Timer_Tick vom Ablauf her nicht richtig sein. Wenn aber, kein Form2 erscheint, so w äre das seltsam. Du erstellst eine Instanz für das Form2 und führst ShowDialog oder Show aus?

0
Toraka 04.05.2014, 22:40
@Toraka

Erstelle einen Break-Point (F9) im Load von Form2, um zu sehen, ob der Ablauf überhaupt bis dahin kommt. Starte das Debuggen mit F5 und, prüfe, ob der Ablauf im Form2 anhält, nachdem du das Form per Button-Klick geöffnet hast.

0
Toraka 04.05.2014, 23:17
@Toraka

Der Ablauf sollte, wie erwähnt, im Form_Load des Form2 zum Anhalten kommen. Passiert das nicht, geht vorher etwas schief!

0

Was möchtest Du wissen?