2008-09-18 2 views
2

J'ai un ordinateur portable GTK avec plusieurs onglets. Chaque étiquette d'onglet est un conteneur composite contenant, entre autres, un bouton que je veux utiliser pour fermer l'onglet. Le bouton a un gestionnaire pour le signal "cliqué". Lorsque le signal est appelé, j'obtiens le widget du bouton et "EventArgs" comme paramètre.Comment puis-je déterminer le numéro de page de l'onglet sur lequel je viens de cliquer dans gtk #?

J'ai besoin de déterminer le numéro de page basé sur le widget 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?

Répondre

4

Un simple travail consiste à passer le numéro de page à l'événement Clicked de votre bouton lorsque vous construisez les 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 page "the_page" est importante, car il s'agit d'une nouvelle variable qui sera capturée par le délégué.

+0

Impressionnant - cette approche va fonctionner! Merci! BTW - J'ai suivi votre blog depuis un certain temps! Merci! – DustinB

Questions connexes