Frage

In Python konnte ich einfach tun builder.connect_signals(self). Es scheint nicht so, als wäre diese Methode in C#und nach dem Betrachten Die GTKBuilder -Dokumentation, Es sieht so aus, als ob Python eher die Ausnahme als die Regel ist. Wie würde ich dasselbe in C#erreichen?

War es hilfreich?

Lösung

Derzeit ist gtk.builder in der aktuellen Version von GTK# (2.12) nicht vollständig implementiert. Dies Faden erklärt die aktuelle Situation. Sobald GTK# 2.14 veröffentlicht wurde, können Sie einfach:

builder.Autoconnect (this);

In der Zwischenzeit könnten Sie verwenden Glade.xml, und dann Ihren Code (und Glade -Dateien) wie hier beschrieben konvertieren: http://lists.ximian.com/pipermail/gtk-sharp-list/2008-october/009157.html

Andere Tipps

Sie können Ihre Signale mithilfe der Methode verbinden Autoconnect, aber Methode, die ein Signal in C# darstellen, muss in Form sein:

static void customMethod(object sender, EventArgs args);

So muss jedes Feld der Klasse, das Sie in einer solchen Methode verwenden, als deklariert werden static. Es raubt Ihnen, eine andere Instanz Ihrer Klasse zu erstellen.

Es gibt eine andere Möglichkeit, Signale zu verbinden:

Builder builder = new Builder();
builder.AddFromFile("custom.glade");
Button button = (Button)builder.GetObject("closeButton");
button.Clicked += delegate {
    Application.Quit();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top