¿Cómo conecto las señales Glade usando GTKBuilder en C#?
-
18-09-2019 - |
Pregunta
En Python, podría hacer builder.connect_signals(self)
. No parece que este método exista en C#, y después de mirar la documentación de GTKBuilder, Parece que Python es la excepción, en lugar de la regla. ¿Cómo lograría lo mismo en C#?
Solución
En este momento, GTK.Builder no se implementa completamente en la versión actual de GTK# (2.12). Este hilo explica la situación actual. Entonces, una vez que se lanza GTK# 2.14, puede hacer:
builder.Autoconnect (this);
Mientras tanto, podrías usar Glade.xml, y luego convierta su código (y archivos glade) como se describe aquí: http://lists.ximian.com/pipermail/gtk-sharp-list/2008-october/009157.html
Otros consejos
Puede conectar sus señales usando el método Autoconnect
, pero el método que representa una señal en C# debe estar en forma:
static void customMethod(object sender, EventArgs args);
Entonces, cada campo de clase que use en dicho método debe declararse como static
. Te roba a crear otra instancia de tu clase.
Hay otra forma de conectar señales:
Builder builder = new Builder();
builder.AddFromFile("custom.glade");
Button button = (Button)builder.GetObject("closeButton");
button.Clicked += delegate {
Application.Quit();
}