C# DialogBox и DialogResult

Я хочу получить кнопку DialogBox, который пользователь нажал... все же, когда я использую DialogResult, я получаю эту ошибку

'System.Windows.Window.DialogResult' is a 'property' but is used like a 'type'

Как я могу использовать DialogResult??

Хорошо, мне удалось решить его.

MessageBoxResult Result = MessageBox.Show("Message Body", @"Caption/Title", MessageBoxButton.YesNo);
        switch (Result)
        {
            case MessageBoxResult.Yes:
                MessageBox.Show("Yes Pressed!!");
                break;
            case MessageBoxResult.No:
                MessageBox.Show("No Pressed!!");
                break;
        }
5
задан sikas 1 July 2010 в 03:21
поделиться

5 ответов

Обновление: только что понял, что вы используете WPF, а не WinForms. Вот правильная реализация DialogResult в WPF:

MyDialog dialog = new MyDialog();
bool? dialogResult = dialog.ShowDialog();
if (dialogResult.HasValue && dialogResult.Value)
{
   // User clicked OK
}
else
{
   // User clicked Cancel"
}

Здесь есть хорошее руководство .

Похоже, вы неправильно используете свойство формы DialogResult . Вы должны сделать что-то вроде следующего:

DialogResult result = Form.DialogResult;
if (result == DialogResult.Yes)
{
   // Do something
}

Вы можете найти полную разбивку нумерации DialogResult здесь .

3
ответ дан 15 December 2019 в 00:49
поделиться

Вам нужен DialogBox? Или для ваших целей подойдет MessageBox?

 DialogResult dlg = MessageBox.Show("Question User?",
                   "MessageBox Title",
                   MessageBoxButtons.YesNo,
                   MessageBoxIcon.Question);
            if (dlg == DialogResult.No)
            {
                //user changed mind. return
                return;
            }

и т. Д.

1
ответ дан 15 December 2019 в 00:49
поделиться

DialogResult - это Enum - вы можете напрямую сравнить со свойством DialogResult вашей формы.

0
ответ дан 15 December 2019 в 00:49
поделиться

Если вы используете WPF или Silverlight, то DialogResult является bool? и вы можете использовать ?? для предоставления значения, если результат равен null.

if (myWindow.DialogResult ?? false)
    Debug.WriteLine("You clicked OK");
else
    Debug.WriteLine("You clicked Cancel");
0
ответ дан 15 December 2019 в 00:49
поделиться

Вы используете свойство WPF DialogResult, которое является Nullable, а не перечислением.

Вам нужно проверить результат так:

bool? dialogResult = dialogBox.ShowDialog();

if (dialogResult.HasValue) // Should always have a value, at this point, since the dialogBox.ShowDialog() returned at this point.  Will be false until the dialog is closed, however
{
    if (dialogResult.Value)
    {
        // User "accepted" the dialog, hitting yes, OK, etc...
    }
    else
    {
        // User hit "cancel" button
    }
}
0
ответ дан 15 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: