C # DialogBox и DialogResult - PullRequest
       0

C # DialogBox и DialogResult

5 голосов
/ 30 июня 2010

Я хочу получить кнопку 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;
        }

Ответы [ 6 ]

3 голосов
/ 30 июня 2010

Обновление: только что понял, что вы используете 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 разбивка перечисления здесь .

1 голос
/ 30 июня 2010

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

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

и т.д.

0 голосов
/ 31 января 2013

C # DialogBox и DialogResult

    {

        DialogResult a1 = MessageBox.Show("Test", "Title", MessageBoxButtons.YesNo);
        if (a1 == DialogResult.Yes)
            MessageBox.Show("Yes");
        else if (a1 == DialogResult.No)
            MessageBox.Show("No");

    }
0 голосов
/ 30 июня 2010

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

Вам необходимо проверить результат следующим образом:

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 голосов
/ 30 июня 2010

Если вы используете WPF или Silverlight, тогда DialogResult - это бул?а можно использовать ??предоставить значение, если результат равен нулю.

if (myWindow.DialogResult ?? false)
    Debug.WriteLine("You clicked OK");
else
    Debug.WriteLine("You clicked Cancel");
0 голосов
/ 30 июня 2010

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

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