Gtk#destroy事件

时间:2012-11-01 05:02:08

标签: mono gtk gtk#

在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。我对“删除”事件不感兴趣。

1 个答案:

答案 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();
    }
}