Mono Gtk#销毁事件

Mono Gtk#销毁事件,mono,gtk,gtk#,Mono,Gtk,Gtk#,在Gtk中,我可以为“destroy”事件连接一个处理程序,但它从未被调用。此应用程序从不打印任何内容。Gtk文档说,“销毁”事件只有在设置了某个标志时才会发送,还说这个标志是由Gdk自动设置的 这是令人沮丧的,因为它基本上与正常工作的普通Gtk+代码相同。除了通过监听“destroy”事件,我如何知道何时调用Application.Quit() 另外,我对“delete”事件不感兴趣。gtk sharp包装器安装自己的销毁事件处理程序,该处理程序首先被调用并断开处理程序的连接。但是,它反过来提

在Gtk中,我可以为“destroy”事件连接一个处理程序,但它从未被调用。此应用程序从不打印任何内容。Gtk文档说,“销毁”事件只有在设置了某个标志时才会发送,还说这个标志是由Gdk自动设置的

这是令人沮丧的,因为它基本上与正常工作的普通Gtk+代码相同。除了通过监听“destroy”事件,我如何知道何时调用
Application.Quit()


另外,我对“delete”事件不感兴趣。

gtk sharp包装器安装自己的销毁事件处理程序,该处理程序首先被调用并断开处理程序的连接。但是,它反过来提供了一个
已销毁的
事件。您可以使用它,如下所示:

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

为什么您对删除事件不感兴趣?@ptomto:Gtk docs:“如果用户请求关闭顶级窗口,则会发出删除事件信号”--我想知道窗口何时关闭,而不是用户何时请求关闭。好吧,这是可行的,但现在的问题是它在哪里被记录。我在文档中没有看到“销毁”事件:有记录吗?它是开源的!哈哈。说真的,我花了一些时间在源代码中挖掘,才发现为什么你的代码不起作用。文档确实应该指出这一点,尽管它是
销毁的
事件(它继承自
Gtk.Object
)。
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();
    }
}