【问题标题】:How do I connect glade signals using GtkBuilder in C#?如何在 C# 中使用 GtkBuilder 连接 Glade 信号?
【发布时间】:2009-11-07 15:47:29
【问题描述】:

在 python 中,我可以做builder.connect_signals(self)。在C#中好像没有这个方法,看了the GtkBuilder documentation之后,看起来python是例外,而不是规则。我如何在 C# 中完成同样的事情?

【问题讨论】:

    标签: c# gtk gtk# glade gtkbuilder


    【解决方案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

    【讨论】:

    【解决方案2】:

    你可以使用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();
    }
    

    【讨论】:

    • 欢迎来到 StackOverflow 并感谢您的参与。此处不鼓励仅使用代码的答案,因为它们对进一步的研究人员没有太大价值,您能否解释一下为什么以及如何工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多