我有一个带有多个选项卡的 GTK 笔记本。每个选项卡标签都是一个复合容器,其中包含一个我想用来关闭选项卡的按钮。该按钮有一个“单击”信号的处理程序。

当信号被调用时,我得到按钮小部件和“EventArgs”作为参数。

我需要根据按钮小部件确定页码,但 myNotebook.PageNum(buttonWidget) 始终返回 -1。我什至尝试过buttonWidget.Parent,它是包含小部件的HBox。

关于我能做什么或我做错了什么有什么想法吗?

有帮助吗?

解决方案

一种简单的解决方法是在构建按钮时将页码传递给按钮的 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”很重要,因为它是一个将由委托捕获的新变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top