Как определить номер страницы для вкладки, на которую я только что нажал в gtk#?
Вопрос
У меня есть блокнот GTK с несколькими вкладками.Каждая метка вкладки представляет собой составной контейнер, содержащий, среди прочего, кнопку, которую я хочу использовать для закрытия вкладки.Кнопка имеет обработчик сигнала «нажатие».
Когда вызывается сигнал, я получаю виджет кнопки и EventArgs в качестве параметра.
Мне нужно определить номер страницы на основе виджета кнопки, но myNotebook.PageNum(buttonWidget) всегда возвращает -1.Я даже пробовал buttonWidget.Parent, который представляет собой HBox, содержащий виджет.
Есть идеи, что я могу сделать или что я делаю неправильно?
Решение
Одним из простых решений является передача номера страницы в событие 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» важен, так как это новая переменная, которая будет зафиксирована делегатом.