1

プロジェクトの場合、Gtk-sharp (2.12) で「再利用可能」なポップアップを作成する必要があります。私は Ubuntu (14.04、LTS)、Monodevelop (4.0.12) で開発しています。

更新関数を呼び出すと、情報が更新され、それ自体がユーザーに表示されます。リフレッシュは問題ありません。私が抱えている問題は、ウィンドウをユーザーに提示するときです。

私の考えは、 window.Present() を使用してユーザーに表示することです。ただし、これをテストすると、奇妙な動作が見つかります。テスト コードは、この投稿の下部に含まれています。

すべての例は、新たに開始されたアプリケーションから始まると仮定します

シナリオ 1:

  1. プログラムを開始
  2. ウィンドウの外をクリック
  3. 待って
  4. 手順 2 と 3 を繰り返します。

結果: ウィンドウが表示され、手順 2 と 3 を繰り返すことができます。問題ない。

シナリオ 2:

  1. プログラムを開始
  2. 「非表示」ボタンをクリックします
  3. 待って
  4. ウィンドウが再表示されます -> これまでのところ、とても良い
  5. 「非表示」ボタンをクリックします
  6. ウィンドウの外をクリック

結果: アイコンは表示されますが、ウィンドウが表示されず、アイコンが揺れることがあります。

ここで何か不足していますか?ウィンドウをリセットするには、TestPresent の本体内でさらにアクションが必要ですか?

ウィンドウが非表示になっている場合は、表示が必要です。

    static Window win;
    public static void Main ()
    {
        Application.Init ();

        win = new Window ("Test");
        win.DeleteEvent += (o, args) => Application.Quit();
        win.Resize (200, 200);

        Button btnHide = new Button (new Label ("Hide"));
        btnHide.Clicked += (sender, e) => win.Hide ();

        win.Add (btnHide);

        GLib.Timeout.Add(5000, new GLib.TimeoutHandler(TestPresent));

        win.ShowAll ();

        Application.Run ();
    }

    private static bool TestPresent()
    {
        win.Show ();
        win.Present ();
        return true;
    }
4

0 に答える 0