Come posso determinare il numero di pagina per la scheda su cui ho appena fatto clic in gtk#?

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

  •  01-07-2019
  •  | 
  •  

Domanda

Ho un notebook GTK con più schede.Ogni etichetta di scheda è un contenitore composito contenente, tra le altre cose, un pulsante che desidero utilizzare per chiudere la scheda.Il pulsante ha un gestore per il segnale "cliccato".

Quando viene chiamato il segnale, ottengo il widget del pulsante e "EventArgs" come parametro.

Devo determinare il numero di pagina in base al widget del pulsante, ma myNotebook.PageNum(buttonWidget) restituisce sempre -1.Ho anche provato buttonWidget.Parent che è l'HBox che contiene il widget.

Qualche idea su cosa posso fare o cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Una soluzione semplice consiste nel passare il numero di pagina all'evento Clicked del pulsante mentre si costruiscono i pulsanti.

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" è importante, poiché è una nuova variabile che verrà catturata dal delegato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top