我正在构建一个应用程序,它显示一个模态对话框以执行某些操作。该模态对话框使用表单构建,并将主应用程序窗口作为所有者传递给Form.ShowDialog方法。
当单击按钮(FontDialog)时,该模态对话框需要生成常规对话框。常规对话框也显示为模态窗口。
因此,“所有者层次结构”是(A -> B表示A“拥有”B) MainApp -> ModalDialog -> FontDialog
问题是,除非我按下ALT键,否则FontDialog不会以任何方式显示。应用程序的行为几乎符合预期,即当我调用FontDialog.ShowDialog()时,无法将焦点设置到MainApp窗口或ModalDialog,但是FontDialog只是“不可见”,直到我按下ALT键(仅此一个键),然后才会显示出来。
有人知道为什么会发生这种情况吗?我尝试将FormDialog的所有者设置为null(因此使用桌面作为所有者窗口),但它的行为方式相同。
提前致谢。
一些代码
啊,是的,还有一件事。如果在调用FontDialog.ShowDialog()之前隐藏ModalDialogForm(代码中的SnapshotDialogView),那么字体对话框就可以正常显示。
当单击按钮(FontDialog)时,该模态对话框需要生成常规对话框。常规对话框也显示为模态窗口。
因此,“所有者层次结构”是(A -> B表示A“拥有”B) MainApp -> ModalDialog -> FontDialog
问题是,除非我按下ALT键,否则FontDialog不会以任何方式显示。应用程序的行为几乎符合预期,即当我调用FontDialog.ShowDialog()时,无法将焦点设置到MainApp窗口或ModalDialog,但是FontDialog只是“不可见”,直到我按下ALT键(仅此一个键),然后才会显示出来。
有人知道为什么会发生这种情况吗?我尝试将FormDialog的所有者设置为null(因此使用桌面作为所有者窗口),但它的行为方式相同。
提前致谢。
一些代码
public class SnapshotDialogView : Form
{
/// bla bla bla
///
/// 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);
}
}
啊,是的,还有一件事。如果在调用FontDialog.ShowDialog()之前隐藏ModalDialogForm(代码中的SnapshotDialogView),那么字体对话框就可以正常显示。