我有一个带有多个标签的GTK笔记本。每个选项卡标签都是一个复合容器,其中包含一个我想用来关闭选项卡的按钮。该按钮具有“点击”信号的处理程序。
当调用信号时,我得到按钮小部件和“EventArgs”作为参数。
我需要根据按钮小部件确定页码,但myNotebook.PageNum(buttonWidget)总是返回-1。我甚至尝试过buttonWidget.Parent,它是包含小部件的HBox。
关于我能做什么或做错什么的任何想法?
答案 0 :(得分: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”很重要,因为它是一个将由代表捕获的新变量。