Comment connecter les signaux Glade en utilisant GTKBUILDER en C #?
-
18-09-2019 - |
Question
Dans Python, je pourrais juste faire builder.connect_signals(self)
. Il ne semble pas que cette méthode existe en C #, et après avoir regardé La documentation GTKBuilder, il semble que Python soit l'exception, plutôt que la règle. Comment pourrais-je accomplir la même chose en C #?
La solution
À l'heure actuelle, GTK.Builder n'est pas entièrement implémenté dans la version actuelle de GTK # (2.12). Cette fil de discussion explique la situation actuelle. Donc, une fois GTK # 2.14 sorti, vous pouvez simplement faire:
builder.Autoconnect (this);
En attendant, vous pouvez utiliser Glade.xml, puis convertissez votre code (et les fichiers Glade) comme décrit ici: http://lists.ximian.com/pipermail/gtk-sharp-list/2008-october/009157.html
Autres conseils
Vous pouvez connecter vos signaux en utilisant la méthode Autoconnect
, mais la méthode qui représente un signal en C # doit être en forme:
static void customMethod(object sender, EventArgs args);
Ainsi, chaque champ de classe que vous utilisez dans une telle méthode doit être déclaré comme static
. Il vous prive de créer une autre instance de votre classe.
Il existe une autre façon de connecter les signaux:
Builder builder = new Builder();
builder.AddFromFile("custom.glade");
Button button = (Button)builder.GetObject("closeButton");
button.Clicked += delegate {
Application.Quit();
}