Comment déterminer le numéro de page de l'onglet sur lequel je viens de cliquer dans gtk #?

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

  •  01-07-2019
  •  | 
  •  

Question

J'ai un cahier GTK avec plusieurs onglets. Chaque étiquette d’onglet est un conteneur composite contenant, entre autres choses, un bouton que je souhaite utiliser pour fermer l’onglet. Le bouton a un gestionnaire pour le " cliqué " signal.

Lorsque le signal est appelé, je récupère le widget de bouton et "EventArgs". en paramètre.

Je dois déterminer le numéro de page en fonction du widget de bouton, mais myNotebook.PageNum (buttonWidget) renvoie toujours -1. J'ai même essayé buttonWidget.Parent qui est le HBox qui contient le widget.

Des idées sur ce que je peux faire ou ce que je fais mal?

Était-ce utile?

La solution

Pour contourner ce problème, il suffit de transmettre le numéro de page à l'événement Clicked de votre bouton lors de la création des boutons.

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); 
    };
}

La " the_page " est important, car il s’agit d’une nouvelle variable qui sera capturée par le délégué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top