2

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

4

2 回答 2

1

现在 Gtk.Builder 在当前版本的 Gtk# (2.12) 中没有完全实现。这个线程解释了当前的情况。所以一旦 Gtk# 2.14 发布,你可以这样做:

builder.Autoconnect (this);

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

于 2009-11-07T22:22:54.247 回答
0

您可以使用 method 连接信号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();
}
于 2014-09-05T11:34:52.003 回答