2012-04-09 3 views
0

Я Охота на Wumpus, и я столкнулся с проблемой. (Я старшеклассник) Я отвечаю за класс Trivia, и я делаю что-то не так. В моем текущем коде я показываю форму, запрашиваю у пользователя ввод и устанавливаю ответ как истину/ложь. Я хочу, чтобы другой класс подсчитывал количество правильных ответов на основе данного ответа. Мой вопрос: как мне получить этот класс для подсчета, когда пользователь закрывает окно?Действие по форме Закрыть? C#

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

    } 

Я получаю "результат" от

public bool getQuestionStatus() 
    { 
     return questionStatus; 
    } 

(на другой класс) Я попытался

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

Но это ничего не делать на закрытии!

+3

Включите ваш соответствующий код. –

+1

Возможный дубликат [C# - действие, когда форма закрыта] (http://stackoverflow.com/questions/2261179/c-sharp-action-when-form-is-closed), почти слово в слово в названии. Пожалуйста, найдите возможные решения, прежде чем отправлять вопрос; он сокращает шум и дублирование. Благодарю. :) –

+0

Думаю, вам может понадобиться добавить еще немного кода. Между этими двумя фрагментами, которые вы опубликовали, нет логических отношений. –

ответ

3

Если я хорошо понимаю, что вы хотите, чтобы запустить какой-то код (который будет считать что-то), когда пользователь закрывает окно?

Программным, вы должны работать на инициализации (например, когда форма загружается)

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!"); 
     } 
Смежные вопросы