Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Свойство DialogResult
Свойство DialogResult
В качестве заключительного задания при создании пользовательского интерфейса выберите кнопку OK в окне проектирования формы и найдите свойство DialogResult. Назначьте DialogResult.OK кнопке OK и DialogResult.Cancel – кнопке Отмена. Формально говоря, вы можете назначить свойству DialogResult любое значение из перечня DialogResult.
public enum System.Windows.Forms.DialogResult {
Abort, Cancel, Ignore, No,
None, OK, Retry, Yes
}
Но что же означает присваивание значения свойству DialogResult элемента Button? Это свойство может быть назначено для любого типа Button (как и для самой формы), и оно позволяет родительской форме определить, какую из кнопок выбрал конечный пользователь. Для примера измените обработчик меню Сервис? Настройка в рамках типа MainForm так, как предлагается ниже,
private void configureToolStripMenuIteimClick(object sender, EventArgs e) {
// Создание экземпляра UserMessageDialog.
UserMessageDialog dlg = new UserMessageDialog();
// Размещение текущего сообщения в TextBox.
dlg.Message = userMessage;
// Если пользователь щелкнул на кнопке OK, отобразить сообщение.
if (DialogResult.OK == dlg.ShowDialog()) {
userMessage = dlg.Message;
Invalidate();
}
// Лучше, чтобы очистку внутренних элементов выполняло само
// диалоговое окно, не дожидаясь сборщика мусора.
dlg.Dispose();
}
Здесь UserMessageDialog отображается с помощью вызова ShowDialog(). Этот метод запустит форму в виде модального диалогового окна, а это, как вы знаете, означает, что пользователь не сможет перейти к главной форме, пока диалоговое окно не будет закрыто. После закрытия диалогового окна пользователем (с помощью щелчка на кнопке OK или на кнопке Отмена), форма станет невидимой, но все еще будет оставаться в памяти. Поэтому вы можете запросить у экземпляра UserMessageDialog (с именем dlg) информацию о новом значении Message в том случае, когда пользователь щелкнул на кнопке OK. В этом случае вы отображаете новое сообщение, иначе не делаете ничего.
Замечание. Чтобы отобразить немодальное диалоговое окно (которое позволяет переходить от родительской формы к диалоговой и обратно), следует вызвать Show(), а не ShowDialog().