1

Gtk#アプリケーションにたくさんのフォームを入れたいです。ユーザーがすべてのフォームを閉じたら、アプリケーションを終了したい。次のコードを使用しようとしています:

    protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
    /*Application.Quit ();
    a.RetVal = true;*/


    if(System.Windows.Forms.Application.OpenForms.Count==0)
    {
        Gtk.Application.Quit ();
        a.RetVal = true;
    }
}

ただし、System.Windows.Forms.Application.OpenForms.Countは、開いているフォームの数に関係なく、常に「0」を返します(OS Ubuntu12.04)。この問題を解決して、開いているフォームの実際の数量を取得するにはどうすればよいですか?前もって感謝します

4

1 に答える 1

0

また、その問題への答えを見つけようとしました。
私の現在の実装は、MS Visual Studioのドキュメントで見たいくつかの概念に基づいています
。プロジェクトのメインクラスで、開いているウィンドウの静的リストを維持します。
削除イベントを使用せず、GTK#ウィンドウの破棄イベントを使用します(OnDeleteイベントハンドラーを使用すると、何かが機能しませんでした。正しく覚えていれば、ウィンドウの削除をメンバー関数から直接呼び出すことはできません)。
OnDestoyイベントハンドラーの場合:ウィンドウが破棄されたら、静的リストから削除します。次に、リストが空かどうかを確認してから、アプリケーションを終了します。
これがGTK#ウィンドウに本当に理想的かどうかはわかりませんが、私のアプリケーションではこの概念は機能します。 ハラルド
よろしく

于 2012-09-02T18:50:16.400 に答える