在Gtk#中,我可以为“destroy”事件挂钩处理程序,但它永远不会被调用。此应用程序从不打印出任何内容Gtk文档说只有在设置了某个标志时才发送“destroy”事件,并且还说Gdk会自动设置该标志。
这很令人沮丧,因为它基本上与普通的Gtk +代码完全相同。除了听“毁灭”事件之外,我怎么知道何时拨打Application.Quit()
?
using System;
using Gtk;
public class MainWindow {
public static void Main(string[] args)
{
Application.Init();
Window win = new Window("Test");
win.Resize(200, 200);
win.DestroyEvent += new DestroyEventHandler(OnDestroy);
win.ShowAll();
Application.Run();
}
private static void OnDestroy(object o, DestroyEventArgs args)
{
Console.WriteLine("OnDestroy");
}
}
P.S。我对“删除”事件不感兴趣。
答案 0 :(得分:4)
gtk-sharp包装器安装自己的destroy事件处理程序,该处理程序首先被调用并断开处理程序。但反过来它会提供Destroyed
事件。您可以使用它,如下所示:
using System;
using Gtk;
public class MainWindow {
public static void Main(string[] args)
{
Application.Init();
Window win = new Window("Test");
win.Resize(200, 200);
win.Destroyed += new EventHandler(OnDestroy);
win.ShowAll();
Application.Run();
}
private static void OnDestroy(object o, EventArgs args)
{
Console.WriteLine("OnDestroy");
Application.Quit();
}
}