В python я мог бы просто сделать builder.connect_signals(self)
. Это не похоже, существует этот метод в С#, и посмотрев на GtkBuilder документация, это выглядит как питон скорее исключение, чем правило. Как выполнить то же самое в С#?
Теперь Gtk.Builder не полностью реализован в текущей версии Gtk # (2.12). Этот поток объясняет текущую ситуацию. Итак, как только Gtk # 2.14 будет выпущен, вы можете просто сделать:
builder.Autoconnect (this);
Тем временем вы можете использовать Glade.XML, а затем преобразовать свой код (и файлы glade), как описано здесь: http://lists.ximian.com/pipermail/gtk-sharp-list/2008-October/009157.html
Вы можете подключить свои сигналы с помощью метода Autoconnect
, но метод, представляющий сигнал в С#, должен быть в форме:
static void customMethod(object sender, EventArgs args);
Итак, каждое поле класса, которое вы используете в таком методе, должно быть объявлено как static
. Это лишает вас возможности создать еще один экземпляр вашего класса.
Существует еще один способ подключения сигналов:
Builder builder = new Builder();
builder.AddFromFile("custom.glade");
Button button = (Button)builder.GetObject("closeButton");
button.Clicked += delegate {
Application.Quit();
}