Как определить номер страницы для вкладки, на которую я только что нажал в gtk #? - PullRequest
2 голосов
/ 18 сентября 2008

У меня есть блокнот GTK с несколькими вкладками. Каждая метка вкладки представляет собой составной контейнер, содержащий, помимо прочего, кнопку, которую я хочу использовать для закрытия вкладки. Кнопка имеет обработчик для сигнала «нажал».

Когда вызывается сигнал, я получаю виджет кнопки и "EventArgs" в качестве параметра.

Мне нужно определить номер страницы на основе виджета кнопки, но myNotebook.PageNum (buttonWidget) всегда возвращает -1. Я даже пробовал buttonWidget.Parent, который является HBox, который содержит виджет.

Есть идеи о том, что я могу сделать или что я делаю неправильно?

1 Ответ

4 голосов
/ 18 сентября 2008

Один из простых способов - передать номер страницы событию Clicked вашей кнопки при создании кнопок.

for (int page = 0; page < n; page++){ 
    int the_page = page;
    NotebookPage p = new NotebookPage ();
    ...
    Button b = new Button ("Close page {0}", the_page);
    b.Clicked += delegate { 
        Console.WriteLine ("Page={0}", the_page); 
    };
}

Важна «the_page», так как это новая переменная, которая будет захвачена делегатом.

...