GTK锐利(重新)呈现一个点击的窗口(Ubuntu)

时间:2014-09-22 13:12:18

标签: c# mono window gtk# bringtofront

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

调用更新功能时,应刷新信息并向用户显示。刷新不是问题。我遇到的问题是向用户展示窗口时。

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

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

情景1:

  1. 启动程序
  2. 点击窗外
  3. 等待
  4. 重复步骤2& 3。
  5. 结果:显示窗口,可以重复步骤2和3。没问题。

    情景2:

    1. 启动程序
    2. 点击“隐藏”按钮
    3. 等待
    4. 窗口重新出现 - >到目前为止,这么好
    5. 点击“隐藏”按钮
    6. 点击窗外
    7. 结果:出现图标但未显示窗口,有时图标会抖动。

      我在这里遗漏了什么吗? 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;
          }
      

0 个答案:

没有答案