Как определить номер страницы для вкладки, на которую я только что нажал в gtk#?

StackOverflow https://stackoverflow.com/questions/93044

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть блокнот 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» важен, так как это новая переменная, которая будет зафиксирована делегатом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top