对于一个项目,我需要制作一个在 Gtk-sharp (2.12) 下应该是“可重复使用”的弹出窗口。我在 Ubuntu (14.04, LTS)、Monodevelop (4.0.12) 下开发
调用更新函数时,它应该刷新信息并向用户显示自己。刷新不是问题。我遇到的问题是向用户展示窗口时。
我的想法是使用 window.Present() 向用户展示它。然而,在测试这个时,我发现了一个奇怪的行为。测试代码包含在这篇文章的底部。
假设所有示例都从一个新启动的应用程序开始
场景一:
- 启动程序
- 在窗口外单击
- 等待
- 重复步骤 2 和 3。
结果:显示窗口,可以重复步骤 2 和 3。没问题。
场景二:
- 启动程序
- 点击“隐藏”按钮
- 等待
- 窗口重新出现->到目前为止,很好
- 点击“隐藏”按钮
- 在窗口外单击
结果:出现图标但不显示窗口,有时图标抖动。
我在这里错过了什么吗?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;
}