обрабатывать ответ из окна сообщения c # - PullRequest
5 голосов
/ 16 октября 2010

как я могу обработать пример ответа в окне сообщения, если пользователь нажимает на «да», что-то делает, если пользователь нажимает «НЕТ», на что-то другое?

Ответы [ 7 ]

19 голосов
/ 16 октября 2010

Пример (слегка измененный) из документов :

const string message =
    "Are you sure that you would like to close the form?";
const string caption = "Form Closing";
var result = MessageBox.Show(message, caption,
                             MessageBoxButtons.YesNo,
                             MessageBoxIcon.Question);

// If the no button was pressed ...
if (result == DialogResult.No)
{
    //Do something for No
} 
else if (result == DialogResult.Yes) 
{
    //Do something else for Yes
}

Приложение : если вы все еще используете .NET 2.0 и неt не имеет доступа к ключевому слову var, объявите result как DialogResult.То есть:

DialogResult result = MessageBox.Show(...);

Пропустил тот факт, что это было помечено с помощью WPF, поэтому, если вы используете это, то вы будете использовать немного (но не слишком много) другую системуКласс .Windows.MessageBox вместо System.Windows.Forms.Messagebox.Взаимодействие в основном такое же, но также используется перечисление MessageBoxResult вместо DialogResult, перечисление MessageBoxImage вместо MessageBoxIcon и перечисление MessageBoxButton вместо MessageBoxButtons (во множественном числе).Вы должны быть в состоянии сделать что-то вроде этого:

const string message =
        "Are you sure that you would like to close the form?";
const string caption = "Form Closing";
MessageBoxResult result = MessageBox.Show(message, caption,
                                 MessageBoxButton.YesNo,
                                 MessageBoxImage.Question);

if (result == MessageBoxResult.No)
{
    // Do something for No
}
else if (result == MessageBoxResult.Yes)
{
    // Do something else for Yes
}
4 голосов
/ 16 октября 2010

Поскольку тег содержит состояния WPF и НЕ WinForms , вам нужно будет сделать что-то подобное для MessageBox:

MessageBoxResult result = MessageBox.Show("Foo Bar?", "Confirmation", MessageBoxButton.YesNoCancel);
if (result == MessageBoxResult.Yes)
{
    // yeah yeah yeah stuff
}
else if (result == MessageBoxResult.No)
{
    // no no no stuff
}
else
{
    // forget about it
}

Кроме того, диалоги по-разному обрабатываются в WPF, обратите внимание на отсутствие DialogResult:

SomeDialog dialog = new SomeDialog();
dialog.ShowDialog();

if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
     MessageBox.Show("Clicked ok");
else
     MessageBox.Show("Clicked cancel");
3 голосов
/ 16 октября 2010

Вы должны попробовать использовать google или msdn (ссылки кликабельны).

В любом случае, вы должны проверить значение messageboxresult, возвращаемое методом show,http://msdn.microsoft.com/en-us/library/ms598674.aspx

2 голосов
/ 02 октября 2015

Лучшее для меня это

if (MessageBox.Show("Are you sure you want to close the window ?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
        {
            //do NO stuff
        }
        else
        {
            //do YES stuff
        }
1 голос
/ 16 октября 2010
DialogResult result = MessageBox.Show("Some Text", "Title", MessageBoxButtons.YesNoCancel);

if(result == DialogResult.Yes)
{
    // do something
}
0 голосов
/ 16 октября 2010

дочерние окна в WPF являются асинхронными действиями.Вы должны обработать событие Close, и внутри вашего события Close вы можете выполнить свою логику.

0 голосов
/ 16 октября 2010

Вот пример:

DialogResult userSelection = MessageBox.Show("Some question","Question",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

// Do something with userSelection   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...