2012-04-09 16 views
0

Ich jage den Wumpus, und ich bin auf ein Problem gestoßen. (Ich bin ein High-Schooler) Ich bin verantwortlich für die Trivia-Klasse, und ich mache hier etwas falsch. In meinem aktuellen Code zeige ich ein Formular an, frage den Benutzer nach einer Eingabe und setze den Antwortstatus als wahr/falsch. Ich möchte, dass eine andere Klasse die Anzahl der richtigen Antworten basierend auf der gegebenen Antwort zählt. Meine Frage ist, wie bekomme ich diese Klasse zu zählen, wenn der Benutzer das Fenster schließt?Aktion auf Formular schließen? C#

public void passOrFailWumpusEncounter(bool result) 
    { 
     if (currentTested == WUMPUS_TEST_AMOUNT) 
     { 
      return; 
     } 
     if(result) 
     { 
      currentPassed++; 
      currentTested++; 
     } 
     else 
     { 
      currentTested++; 
     } 

    } 

ich das "Ergebnis" von

public bool getQuestionStatus() 
    { 
     return questionStatus; 
    } 

(auf einer anderen Klasse) immer habe ich versucht

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) 
    { 
     trivia.passOrFailWumpusEncounter(prompt.getQuestionStatus()); 
    } 

Aber es macht nichts auf nah!

+3

Fügen Sie Ihren entsprechenden Code. –

+1

mögliches Duplikat von [C# - Aktion bei geschlossenem Formular] (http://stackoverflow.com/questions/2261179/c-sharp-action-when-form-is-closed), fast Wort für Wort im Titel. Bitte suchen Sie nach möglichen Lösungen, bevor Sie eine Frage stellen. es reduziert Lärm und Doppelarbeit. Vielen Dank. :) –

+0

Ich denke, Sie müssen möglicherweise ein wenig mehr Code enthalten. Es gibt keine logische Beziehung zwischen den beiden Snippets, die Sie gepostet haben. –

Antwort

3

Wenn ich gut verstehe, was Sie wollen, ist etwas Code (der etwas zählt), wenn der Benutzer das Fenster schließt?

Programmatisch sollten Sie bei init (zum Beispiel, wenn das Formular geladen wird) laufen

form1.Close += ANewFunction; // registering the handler 

Und schreiben Sie die Handler selbst:

public void ANewFunction(EventsArg e) { ... } 

Aber in einem solchen einfachen Fall sollten Sie lassen Visual Studio führt den Auftrag "dreckig" aus: Doppelklicken Sie in den Formulareigenschaften auf das Ereignis "Schließen" (Sie müssen möglicherweise auf eine Schaltfläche auf der Registerkarte Eigenschaften klicken, um die Ereignisse anzuzeigen, und den Handler in form1.designer.cs registrieren und den Befehl erstellen Prototyp des Handlers in der Nähe Ihres Benutzercodes

+1

Das einfache Schreiben von "Form1_FormClosing" reicht nicht aus, um den Code auszuführen. Sie müssen den Handler für das Ereignis mit "form1.Close + = ANewFunction" registrieren. – PPC

+0

Oh. Vielen Dank. Funktioniert jetzt. –

+0

Bitte markieren Sie dies als die Antwort, wenn es Ihr Problem gelöst hat. –

0

Suchen Sie nach einem Ereignis, das auf das Schließen des Formulars wartet. Erstellen Sie einen Handler, schreiben Sie Code, der eine Methode in der anderen Klasse aufruft, die die Anzahl der richtigen Antworten festlegt. Wenn dies nicht detailed ist, stellen Sie Ihre Frage bitte detaillierter ...

+0

Das beantwortet meine Frage nicht ... Sie haben mir gesagt, was ich wissen .. –

+2

@Ben, in diesem Fall müssen Sie besser beim Schreiben Ihrer Fragen werden. –

0

Nachdem das Formular erstellt und angezeigt wurde, ist es immer noch live. So können Sie die Antwort von diesem Formular in der aufrufenden Funktion lesen.

Zum Beispiel:

 Form myForm = new Form(); 
     myForm.ShowDialog(); 
     if (myForm.CheckBox.Checked) //myForm still exists and you check it's state 
     { 
      Console.Out.WriteLine("The answer is yes!"); 
     } 
Verwandte Themen