2013-04-05 16 views
3

我開發用的MonoMac(C#)Cocoa應用程序。如何使用C#在MonoMac中打開窗口作爲模式對話框?

我有一個類MyWindowController繼承MonoMac.AppKit.NSWindowController,並打開這個窗口是這樣的一個新實例:

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

但是我怎麼打開它作爲一個模式對話框?在對話框打開的時候,我的應用程序中沒有其他任何東西是必須的,所以我不能使用一個窗口表(它只能阻止當前窗口)。而且我無法找到任何似乎在我的控制器上做我想做的事情。在Windows中,我會簡單地通過調用做到了這一點:

mwc.ShowDialog(); 

所以,我要的是等效的MonoMac的ShowDialog(),我相信。

回答

4

我花了近三個小時嘗試張貼問題之前,要弄清楚這一點,但我當然找到了解決辦法,詢問之後。

它看起來像我需要使用的NSApplication對象:

NSApplication.SharedApplication.RunModalForWindow(ewc.Window); 
+0

每當有人問一個問題,回來的答案,互聯網的工作。謝謝! – 2014-03-06 22:54:01

+0

其實,你有沒有想過如何正確地從模態調用返回? – 2014-03-06 23:54:34

+0

不,這不是我的應用程序所需要的,所以我從來沒有試圖弄清楚。 – 2014-03-07 15:51:06

2

我有以上回答的成功,但後來遇到了麻煩駁回,該「關閉」按鈕被按下時的模式。解決的辦法是代碼

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

添加到窗口控制器,然後設置窗口控制器是由窗口的委託,在界面生成器中,右鍵單擊該窗口,並從「委託」拖行到「文件所有者」塊。

相關問題