Como faço para determinar o número da página para a guia Eu só clicou em GTK #?

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

  •  01-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top