Ну я работал над простым приложением для запуска/остановки и перезапуска моей ЛАМПЫ в моно (только, чтобы знать развитие GUI с моно немного больше), так чтобы иметь меньше кнопок Я решил создать одну кнопку для запуска и остановки серверов. В GUI-дизайнере я добавил кнопку запуска с иконкой, проблема в том, что обновление ярлыка кнопки легко, но изменение изображения на Stock.MediaStop - небольшая проблема. Итак, как изменить изображение запаса в кнопке на событии клика (оно не измеряет, на каком именно событии оно на самом деле). Вот некоторый код: Графический интерфейс XML для кнопки:Как обновить изображение в gtk.Button с 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>
А вот как MediaDevelop сделаны кнопки Stock с пользовательским текстом:
// 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);