【问题标题】:Handle a MonoMac Exit/Window Close Event处理 MonoMac 退出/窗口关闭事件
【发布时间】:2011-10-19 21:20:27
【问题描述】:

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

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

编辑

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

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender)

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

【问题讨论】:

    标签: macos events mono exit monomac


    【解决方案1】:

    这就是我最终要做的。我创建了一个名为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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多