3

以前に投稿したこの質問に似ています: WPF 終了イベントを処理する

Objective C で解決策を見つけましたが、これを Mono に移植する方法に慣れていません。

編集

次のオーバーライドを使用して、やりたいことを実行できることがわかりました。

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender)

ただし、MainWindow を閉じると問題が発生します。これは、実際にアプリケーション終了の呼び出しを開始する場所であるためです。true を返すオーバーライドが既にあるApplicationShouldTerminateAfterLastWindowClosedため、終了オーバーライドが正しく呼び出されています。しかし、キャンセルを返すと、アプリは実行中です。ウィンドウはありません。ウィンドウを閉じるイベントを傍受する方法はありますか?

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 に答える