代码之家  ›  专栏  ›  技术社区  ›  DustinB

如何确定在GTK中单击的选项卡的页码?

  •  2
  • DustinB  · 技术社区  · 18 年前

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

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

    我需要根据按钮小部件确定页码,但是mynotebook.pagenum(button widget)总是返回-1。我甚至尝试过buttonwidget.parent,它是包含该widget的hbox。

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

    1 回复  |  直到 18 年前
        1
  •  4
  •   miguel.de.icaza    18 年前

    一个简单的解决方法是在构建按钮时将页码传递给按钮的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); 
        };
    }
    

    “页面”很重要,因为它是委托将捕获的新变量。