1

我设置了一个要显示的保存文件对话框,但是当我单击它时,它会消失在背景中,没有选项卡或任何东西。我的问题是如何使对话框模态化?如果您不知道我的意思,请进入记事本点击另存为并尝试单击关闭对话框。您将看到窗口闪烁,并且您会听到美妙的声音,通知您必须先在对话框中执行某项操作,然后再执行其他操作。我想用我的对话来达到这个效果,但我不知道怎么做。我不能简单地使用Form.Modal属性,因为它处理表单并且这不是表单。有人可以帮我吗?

谢谢。

编辑:

这就是我显示对话框的方式,它在 XNA 中运行,当我单击另存为按钮时,该EntrySelected()方法被调用:

    private void EntrySelected(object sender, EventArgs e) {
        if(sender == saveAsEntry) {
            sfd = new SaveFileDialog();
            thread = new Thread(ShowSaveDialog);
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
        }
        ...
    }
    private void ShowSaveDialog() {
        if(sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
            World.Save(sfd.FileName);
            thread.Abort();
        }
        else {
            thread.Abort();
        }
    }
4

1 回答 1

2

实际上,您的 Dialog 是一个表单,正如上面的评论所暗示的,没有 Show 方法,您应该使用 ShowDialog() 命令将其作为模态对话框打开。

IE

SaveFileDialog1.ShowDialog();

根据您的编辑,有一个ShowDialog版本,您可以在其中将所有者分配给 Dialog,也许这对您有用。

SaveFileDialog1.ShowDialog(dialogOwner);

从上面的链接:

此版本的 ShowDialog 方法允许您指定将拥有显示的对话框的特定窗体或控件。如果您使用没有参数的此方法版本,则显示的对话框将自动归应用程序的当前活动窗口所有。

于 2012-07-03T01:41:19.353 回答