3

类似于我之前发布的这个问题:处理 WPF 退出事件

在 Objective C 中找到了一个解决方案,但我不熟悉如何用 Mono 移植它。

编辑

我发现我可以使用以下覆盖来做我想做的事:

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender)

但是,如果我关闭我的 MainWindow 现在会出现问题,因为这实际上是我想要开始调用应用程序退出的地方。我已经有一个ApplicationShouldTerminateAfterLastWindowClosed返回 true 的覆盖,因此终止覆盖被正确调用。但是当我返回取消时,应用程序正在运行,没有窗口。有没有办法拦截窗口关闭事件?

4

1 回答 1

4

这就是我最终做的。我创建了一个名为的新类MainWindowDelegate

public class MainWindowDelegate : MonoMac.AppKit.NSWindowDelegate
{
    public override WindowShouldClose (MonoMac.Foundation.NSObject sender)
    {
        return false;
    }
}

然后,在我的MainWindowController课堂上:

public class MainWindowController
{
    private MainWindowDelegate _delegate;

    // Shared initialization code
    void Initialize()
    {
        _delegate = new MainWindowDelegate();
    }

    public override void WindowDidLoad()
    {
        Window.Delegate = _delegate;
    }
}
于 2011-10-20T15:19:23.433 回答