【问题标题】: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;
}
}