Обработка события выхода / закрытия окна MonoMac - PullRequest
3 голосов
/ 20 октября 2011

Аналогично этому вопросу, который я опубликовал ранее: Обработка события выхода WPF

Я нашел решение в Цели C , но я не знаком с тем, какчтобы перенести это с Mono.

EDIT

Я обнаружил, что могу использовать следующее переопределение, чтобы сделать то, что я хотел:

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender)

Однако теперь возникает проблема, если я закрываю свое MainWindow, поскольку именно здесь я хочу начать вызывать приложение.У меня уже есть переопределение для ApplicationShouldTerminateAfterLastWindowClosed, которое возвращает true, поэтому переопределение завершения вызывается правильно.Но когда я возвращаю Отмена, приложение работает, без окна.Есть ли способ перехватить событие закрытия окна?

1 Ответ

4 голосов
/ 20 октября 2011

Я так и сделал.Я создал новый класс с именем 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;
    }
}
...