Eh bien, je travaillais sur une application simple pour démarrer/arrêter et redémarrer mon LAMP en mono (juste pour apprendre à connaître le développement de l'interface graphique avec un peu plus), pour avoir moins de boutons J'ai décidé d'avoir un bouton pour démarrer et arrêter les serveurs. Dans le concepteur de GUI j'ai ajouté un bouton de démarrage avec l'icône, le problème est que la mise à jour de l'étiquette du bouton est facile, mais le changement de l'image à Stock.MediaStop est un peu un problème. Alors Comment changer l'image de stock dans un bouton sur l'événement de clic (il ne mesure pas sur quel type d'événement il est réellement). Voici un code: Le XML GUI pour un bouton:Comment mettre à jour l'image dans gtk.Button avec GTK #
<widget class="Gtk.Button" id="button1">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Type">TextAndIcon</property>
<property name="Icon">stock:gtk-media-play Menu</property>
<property name="Label" translatable="yes">Start</property>
<property name="UseUnderline">True</property>
<signal name="Clicked" handler="OnMysqlServerStartStop" />
</widget>
Et voici comment MediaDevelop fait le bouton Stock avec un texte personnalisé:
// Container child hbox1.Gtk.Box+BoxChild
this.hbuttonbox1 = new Gtk.HButtonBox();
this.hbuttonbox1.Name = "hbuttonbox1";
// Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
this.button1 = new Gtk.Button();
this.button1.CanFocus = true;
this.button1.Name = "button1";
this.button1.UseUnderline = true;
// Container child button1.Gtk.Container+ContainerChild
Gtk.Alignment w2 = new Gtk.Alignment(0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
Gtk.HBox w3 = new Gtk.HBox();
w3.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
Gtk.Image w4 = new Gtk.Image();
w4.Pixbuf = Stetic.IconLoader.LoadIcon(this, "gtk-media-play", Gtk.IconSize.Menu, 16);
w3.Add(w4);
// Container child GtkHBox.Gtk.Container+ContainerChild
Gtk.Label w6 = new Gtk.Label();
w6.LabelProp = Mono.Unix.Catalog.GetString("Start");
w6.UseUnderline = true;
w3.Add(w6);
w2.Add(w3);
this.button1.Add(w2);
this.hbuttonbox1.Add(this.button1);