2008-09-18 17 views
2

我有一個帶有多個選項卡的GTK筆記本。每個標籤標籤都是一個複合容器,其中包含一個我想用來關閉標籤的按鈕。該按鈕具有用於「單擊」信號的處理程序。如何確定我剛纔在gtk#中點擊的標籤的頁碼?

當信號被調用時,我得到按鈕小部件和「EventArgs」作爲參數。

我需要根據按鈕小部件確定頁碼,但是myNotebook.PageNum(buttonWidget)總是返回-1。我甚至試過了包含widget的HBox buttonWidget.Parent。

關於我能做什麼或我做錯什麼想法?

回答

4

一個簡單的解決方法是在構建按鈕時將頁碼傳遞給按鈕的Clicked事件。

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」很重要,因爲它是一個新的變量,它將被委託人捕獲。

+0

真棒 - 這種方法將工作!謝謝! 順便說一句 - 我已經關注了你的博客一段時間!謝謝! – DustinB 2008-09-18 17:03:57

相關問題