Wie verbinde ich Glade -Signale mit GTKBuilder in C#?
-
18-09-2019 - |
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?
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();
}