2012-04-09 1 views
0

私はWumpusを狩っています。問題が発生しました。 (私は高校生です) 私はトリビアクラスを担当しています。私はここで何か間違っています。 私の現在のコードでは、フォームを表示し、ユーザーに入力を求め、answerstatusをtrue/falseに設定しています。私は与えられた答えに基づいて正しい答えの数を数えるために別のクラスを欲しい。私の質問は、ユーザーがウィンドウを閉じるときに、このクラスをカウントさせるにはどうすればいいですか?フォームの操作が終了しましたか? C#

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

    } 

私は私が

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

を試みた。しかし、それは、クローズ時に何もしません!(別のクラスの)

public bool getQuestionStatus() 
    { 
     return questionStatus; 
    } 

から "結果" を取得しています

+3

はあなたの関連するコードを含めます。 –

+1

[c# - フォームが閉じられたときのアクション](http://stackoverflow.com/questions/2261179/c-sharp-action-when-form-is-closed)の重複した可能性があります。質問を投稿する前に、解決策を探してください。ノイズと重複を削減します。ありがとう。 :) –

+0

もう少しコードを追加する必要があるかもしれないと思います。あなたが投稿した2つのスニペットの間には論理的な関係はありません。 –

答えて

3

私がうまくいけば、あなたが望むのは、ユーザがウィンドウを閉じるときに何らかのコードを実行することです。プログラム

、あなたは(フォームがロードされたときに、たとえば)のinitで

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

を実行し、ハンドラ自体を記述する必要があります。

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

しかし、このような単純なケースでは、あなたがさせてくださいVisual Studioでは、フォームのプロパティで、イベントをダブルクリックします(イベントを表示するには、プロパティタブのボタンをクリックする必要があります。その場合、form1.designer.csにハンドラが登録され、ユーザコードに近いハンドラのプロトタイプ。

+1

"Form1_FormClosing"と書いても、コードを実行するだけでは不十分です。 "form1.Close + = ANewFunction;"を使用してイベントにハンドラを登録する必要があります。 – PPC

+0

ああ。ありがとう。今すぐ動作します。 –

+0

問題を解決した場合は、これを答えとして記入してください。 –

0

フォームクローズを待ち受けるイベントを検索します。ハンドラを作成し、正しい答えの数を設定する他のクラスのメソッドを呼び出すコードを記述します。これが間違っている場合は、より詳細な質問をしてください...

+0

これは私の質問には答えません。知っている.. –

+2

@Ben、その場合、あなたはあなたの質問を書く上でより良くなる必要があります。 –

0

フォームを作成して表示した後も、それはまだライブです。だからあなたはそのフォームからの答えを呼び出し関数で読むことができます。例えば

 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!"); 
     } 
関連する問題