处理MonoMac退出/窗口关闭事件

时间:2011-10-19 21:20:28

标签: macos events mono exit monomac

类似于我之前发布的这个问题:Handle a WPF Exit Event

我找到a solution in Objective C,但我不熟悉如何用Mono移植它。

修改

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

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender)

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

1 个答案:

答案 0 :(得分: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;
    }
}