Я создаю приложение, которое показывает модальное диалоговое окно для некоторой операции. Этот модальный диалог создается с использованием формы и имеет в качестве владельца главное окно приложения, которое передается в качестве параметра в методе Form.ShowDialog.
Этот модальный диалог должен вызывать обычный диалог при нажатии кнопки, (FontDialog) Общий диалог также отображается как модальное окно.
Таким образом, «иерархия владельцев» имеет вид (A -> B означает, что A «владеет» B)
MainApp -> ModalDialog -> FontDialog
Хорошо, проблема в том, что FontDialog не отображается в любом случае, ЕСЛИ Я не нажму клавишу ALT. Приложение ведет себя почти так, как ожидалось, т.е. когда я вызываю FontDialog.ShowDialog (), я не могу установить фокус ни на окно MainApp, ни на ModalDialog, но FontDialog просто «невидим», пока я не нажму клавишу ALT (только этот единственный ключ), а затем появляется.
Кто-нибудь знает, почему это происходит? Я попытался установить для владельца FormDialog значение null (таким образом, используя рабочий стол как окно владельца), но он ведет себя так же неправильно.
Заранее спасибо.
некоторый код
Открытый класс SnapshotDialogView: Форма
{
/// бла бла бла
///
/// Button click handler
private void btnChangeFont_Click(object sender, EventArgs e)
{
// this.Owner == MainAppWindow
DialogResult result = fontDialog.ShowDialog(this);
if (DialogResult.Cancel == result)
return;
Presenter.ChangeLabelsFont(fontDialog.Font);
}
}
Ах, да, еще одна вещь. Если я скрою ModalDialogForm (SnapshotDialogView в коде) перед вызовом FontDialog.ShowDialog (), диалоговое окно шрифта будет отображаться нормально.