Como faço para determinar o número da página para a guia Eu só clicou em GTK #?
Pergunta
Eu tenho um notebook GTK com várias abas. Cada etiqueta guia é um recipiente composto que contém, entre outras coisas, um botão que eu quero usar para fechar a guia. O botão tem um manipulador para o sinal "clicado".
Quando o sinal é chamado, eu recebo o widget botão e "EventArgs" como um parâmetro.
Eu preciso para determinar o número da página com base no widget botão, mas myNotebook.PageNum (buttonWidget) sempre retorna -1. Eu até tentei buttonWidget.Parent que é o HBox que contém o widget.
Algumas ideias sobre o que posso fazer ou o que estou fazendo de errado?
Solução
Um trabalho fácil em torno é para passar o número da página para evento Clicked do seu botão como você construir os botões.
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);
};
}
O "the_page" é importante, pois é uma nova variável que será capturada pelo delegado.