如何在C#中使用GtkBuilder连接glade信号?

时间:2009-11-07 15:47:29

标签: c# gtk gtk# glade gtkbuilder

在python中,我可以做builder.connect_signals(self)。看起来这个方法似乎不存在于C#中,并且在查看the GtkBuilder documentation之后,看起来python是例外,而不是规则。我如何在C#中完成同样的事情?

2 个答案:

答案 0 :(得分:1)

目前Gtk.Builder尚未在当前版本的Gtk#(2.12)中完全实现。 这thread解释了当前的情况。所以一旦Gtk#2.14发布,你就可以做到:

builder.Autoconnect (this);

在此期间,您可以使用Glade.XML,然后按照此处所述转换代码(和glade文件):http://lists.ximian.com/pipermail/gtk-sharp-list/2008-October/009157.html

答案 1 :(得分:0)

您可以使用方法Autoconnect连接信号,但表示c#中信号的方法必须采用以下形式:

static void customMethod(object sender, EventArgs args);

因此,您在此类方法中使用的每个类字段都必须声明为static。它会让你无法创建你班级的另一个实例。

还有另一种连接信号的方法:

Builder builder = new Builder();
builder.AddFromFile("custom.glade");
Button button = (Button)builder.GetObject("closeButton");
button.Clicked += delegate {
    Application.Quit();
}