【发布时间】:2009-11-07 15:47:29
【问题描述】:
在 python 中,我可以做builder.connect_signals(self)。在C#中好像没有这个方法,看了the GtkBuilder documentation之后,看起来python是例外,而不是规则。我如何在 C# 中完成同样的事情?
【问题讨论】:
标签: c# gtk gtk# glade gtkbuilder
在 python 中,我可以做builder.connect_signals(self)。在C#中好像没有这个方法,看了the GtkBuilder documentation之后,看起来python是例外,而不是规则。我如何在 C# 中完成同样的事情?
【问题讨论】:
标签: c# gtk gtk# glade gtkbuilder
目前 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
【讨论】:
你可以使用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();
}
【讨论】: