3

我正在使用 MonoMac (C#) 开发一个 Cocoa 应用程序。

我有一个MyWindowController继承的类MonoMac.AppKit.NSWindowController,并像这样打开这个窗口的一个新实例:

MyWindowController mwc = new MyWindowController();
mwc.Window.MakeKeyAndOrderFront(this);

但是如何将它作为模态对话框打开?当对话框打开时,我的应用程序中的任何其他内容都必须执行,因此我不能使用窗口工作表(它只会阻止当前窗口)。而且我找不到任何其他似乎可以在我的控制器上做我想做的事情。在 Windows 上,我只需调用以下命令即可完成此操作:

mwc.ShowDialog();

所以我想要的是 MonoMac 的等价物ShowDialog(),我相信。

4

2 回答 2

4

在发布问题之前,我花了将近三个小时试图弄清楚这一点,但当然我在询问后立即找到了解决方案。

看起来我需要使用 NSApplication 对象:

NSApplication.SharedApplication.RunModalForWindow(ewc.Window);
于 2013-04-05T11:31:52.550 回答
2

我在上面的答案中取得了成功,但是在按下“关闭”按钮的情况下无法解除模式。解决方案是添加代码

[Export ("windowWillClose:")]
    public void WindowWillClose(NSNotification notification)
    {
        Console.WriteLine("windowWillClose:");
        NSApplication.SharedApplication.StopModal ();
    }

到窗口控制器,然后将窗口控制器设置为窗口的委托,在 Interface Builder 中,右键单击窗口并将一行从“委托”拖到“文件所有者”块。

于 2014-03-07T00:52:27.873 回答