2

複数のタブがあるGTKノートブックを持っています。各タブラベルは、特にタブを閉じるために使用するボタンを含む複合コンテナです。ボタンには、「クリックされた」信号のハンドラーがあります。

シグナルが呼び出されると、ボタンウィジェットと「EventArgs」がパラメーターとして取得されます。

ボタンウィジェットに基づいてページ番号を決定する必要がありますが、myNotebook.PageNum(buttonWidget)は常に-1を返します。ウィジェットを含むHBoxであるbuttonWidget.Parentも試しました。

私に何ができるのか、何が間違っているのかについてのアイデアはありますか?

4

1 に答える 1

4

簡単な回避策の 1 つは、ボタンを作成するときにボタンの 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" は、デリゲートによってキャプチャされる新しい変数であるため、重要です。

于 2008-09-18T16:09:57.380 に答える