如何使用c#在MonoMac中打开一个窗口作为模态对话框
本文关键字:一个 窗口 对话框 模态 何使用 MonoMac | 更新日期: 2023-09-27 18:07:28
我正在用MonoMac (c#)开发一个Cocoa应用程序。
我有一个继承MonoMac.AppKit.NSWindowController
的类MyWindowController
,并像这样打开这个窗口的新实例:
MyWindowController mwc = new MyWindowController();
mwc.Window.MakeKeyAndOrderFront(this);
但是我如何打开它作为一个模态对话框?当对话框打开时,我的应用程序中没有任何其他内容被执行,这是必要的,所以我不能使用窗口表(它只阻塞当前窗口)。我在控制器上找不到任何我想要的东西。在Windows上,我只需调用:
mwc.ShowDialog();
所以我想要的是MonoMac等效的ShowDialog()
,我相信。
在发布问题之前,我花了将近三个小时试图弄清楚这个问题,但当然我在问完之后就找到了解决方案。
看起来我需要使用NSApplication对象
NSApplication.SharedApplication.RunModalForWindow(ewc.Window);
我在上面的答案上取得了成功,但在按下"关闭"按钮的情况下,我在消除模态方面遇到了麻烦。解决方案是添加代码
[Export ("windowWillClose:")]
public void WindowWillClose(NSNotification notification)
{
Console.WriteLine("windowWillClose:");
NSApplication.SharedApplication.StopModal ();
}
到窗口控制器,然后将窗口控制器设置为窗口的委托,在Interface Builder中,右键单击窗口并从"委托"拖动一条线到"文件的所有者"块。