1

对于一个项目,我需要制作一个在 Gtk-sharp (2.12) 下应该是“可重复使用”的弹出窗口。我在 Ubuntu (14.04, LTS)、Monodevelop (4.0.12) 下开发

调用更新函数时,它应该刷新信息并向用户显示自己。刷新不是问题。我遇到的问题是向用户展示窗口时。

我的想法是使用 window.Present() 向用户展示它。然而,在测试这个时,我发现了一个奇怪的行为。测试代码包含在这篇文章的底部。

假设所有示例都从一个新启动的应用程序开始

场景一:

  1. 启动程序
  2. 在窗口外单击
  3. 等待
  4. 重复步骤 2 和 3。

结果:显示窗口,可以重复步骤 2 和 3。没问题。

场景二:

  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