2015-03-25 5 views
-4

Я уверен, что это, вероятно, было задано много раз, но я не могу его найти. У меня есть код, который открывает сообщение на основе двух результатов на вопрос «Правильно или неправильно». В настоящее время нажатие кнопки ok в окне сообщений возвращается к форме с вопросом. Я хочу, чтобы произошло одно из двух действий, я просто не знаю, с чего начать.C# Как настроить событие закрытия формы в MessageBox

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

Я не могу найти событие для закрытия формы окна сообщения.

Может ли кто-нибудь поделиться советами? Спасибо за ваше время.

double userAnswer = double.Parse(txtResult.Text); if (Question.CheckIfRight(userAnswer)) MessageBox.Show("Right!!"); else MessageBox.Show("Wrong"); 
+1

Почтовый индекс и, возможно, вы получите ответ в кратчайшие сроки. – Steve

+0

Кажется, что вы хотите создать окно пользовательского окна сообщений с простым делегатом (например, Action), которое будет вызываться при закрытии ... – ymz

+0

Ох ... вам не нужно это событие, вам просто нужен вопрос .CheckIfRight boolean, если true, изменить вопрос, в противном случае не изменять – User2012384

ответ

0

MessageBox.Show(...) возвращает одно из значений из DialogResult перечисления. Вы можете использовать это, чтобы проверить, какой из предложенных опций пользователь нажал.

Таким образом, код может выглядеть следующим образом:

double userAnswer = double.Parse(txtResult.Text); 
DialogResult dr; 

if (Question.CheckIfRight(userAnswer)) 
{ 
    dr = MessageBox.Show("Right"); 
} 
else 
{ 
    dr = MessageBox.Show("Wrong"); 
} 

if(dr == DialogResult.OK) 
{ 
    // Your "action" goes here 
} 

Таким образом, вы можете проверить, когда MessageBox был закрыт, и на какую кнопку нажал пользователь, чтобы закрыть его. Исходя из этого, вы можете продолжать свою программу так, как хотите.

1

Звучит так, как будто ваш вопрос больше о потоке программы.

private void submitButton_Click(object sender, EventArgs e) 
{ 
    var userAnswer = double.Parse(txtResult.Text); 

    if (!Question.CheckIfRight(userAnswer)) 
    { 
     MessageBox.Show("Wrong"); 
     return; 
    } 

    MessageBox.Show("Right!!"); 
    RefreshQuestion(); 
} 

Update:

Имейте в виду, что MessageBox.Show("Right!!") будет блокировать код вызова и ждать, пока пользователь не нажмет кнопку OK, прежде чем продолжить, чтобы RefreshQuestion(); так что вы не должны проводить какие-либо мероприятия для когда он закрывается.

Смежные вопросы