Как получить System.Windows.ShowDialog () для возврата «истина»? - PullRequest
40 голосов
/ 03 февраля 2009

Как мне получить System.Windows.ShowDialog(), чтобы вернуть 'true'?

Я немного новичок в этом. System.Windows.ShowDialog тип возврата bool? Он должен возвращать true при нажатии Submit и false при нажатии Cancel. Но я не уверен, как определить, какая Button является официальной кнопкой отправки.

EDIT: Что касается связанной ноты, мне любопытно, как она может возвращать ноль.

Ответы [ 3 ]

40 голосов
/ 03 февраля 2009

http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx

ShowDialog возвращает Nullable <(Of <(T>)>) Логическое значение, которое указывает была ли деятельность принята или отменен. Возвращаемое значение значение свойства DialogResult до закрытия окна (см. DialogResult).

По сути, вы решаете, устанавливая значение DialogResult, а не нажимая определенную кнопку - вы решаете, что делает кнопка.

17 голосов
/ 03 февраля 2009

В WPF установите для свойства Button.IsDefault значение true, чтобы указать, что кнопка является кнопкой «Отправить» для окна. Я не уверен на 100%, что это закроет окно с DialogResult, равным true. Если это не так, вам просто нужно обработать событие Click следующим образом:

this.DialogResult = true;

Редактировать

Аналогично, вы можете использовать свойство Button.IsCancel , чтобы кнопка была кнопкой "отмены" для формы.

Редактировать 2

Я считаю, что причина, по которой ShowDialog обнуляется, заключается в том, что, поскольку он равен нулю до тех пор, пока форма не будет отправлена ​​или отменена, вы можете проверить это, если просматриваете диалог в фоновом потоке. Я не пробовал этого, но кажется логичной причиной, по которой они вводят третье «неизвестное» (нулевое) состояние в свойство.

8 голосов
/ 03 февраля 2009

, если для DialogResult установлено значение true, ShowDialog возвращает значение true, если для параметра DialogResult установлено значение false, ShowDialog возвращает значение false, если диалоговое окно закрывается без установки DialogResult (пользователь нажимает на красный крестик в правом верхнем углу). ShowDialog возвращает ноль.

Если для параметра IsDefault задано значение true, кнопка будет выглядеть несколько иначе, а нажатие кнопки ввода «щелкнет» эту кнопку.

Если вы установите IsCancel в значение true, нажатие клавиши esc «щелкнет» по этой кнопке.

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