如何确定我刚刚在gtk#中单击的选项卡的页码?
时间:2020-03-06 14:21:35 来源:igfitidea点击:
我有一个带有多个标签的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"很重要,因为它是将由委托捕获的新变量。