【问题标题】:How to handle tab selection in Gtk# Notebook widget?如何处理 Gtk# Notebook 小部件中的选项卡选择?
【发布时间】:2013-08-18 12:57:03
【问题描述】:

我以为这很容易,但是...

// An empty Notebook defined in Stetic designer and created in generated code
Notebook tabs = this.TabsContainer;

tabs.SelectPage += (o, args) => {
    Application.Quit();
};

// Then I add some pages in code by calling tabs.AppendPage(...)

使用此代码,当我通过单击选项卡来回切换笔记本页面时,显然没有处理事件。我也尝试使用其他事件(FocusTab),但无论如何都不会调用处理程序。我错过了什么?

【问题讨论】:

  • 我不解析这句话“顺便说一句,在我的应用程序中,我真的只想知道标签何时首次显示给用户。”
  • @knocte 没关系。这并不重要。我可能会重写它,当我再次心情好的时候。英语不是我的母语。对不起。
  • 这很重要,我过去用 Notebooks 实现了一些 Gtk# 代码,我从来不需要订阅那个事件,你为什么需要它?
  • @knocte 简而言之,我需要订阅该事件才能知道用户何时打开选项卡,因为我只想在那之后从 Internet 请求一些数据。

标签: c# events mono gtk gtk#


【解决方案1】:

我查看了 gtk+ 的来源,似乎选择页面信号已定义,但从未发出(我可能会提交一个错误以将其标记为已弃用)。

我还注意到信号切换页面(您应该能够通过事件SwitchPage 订阅)肯定会发出,所以这应该可以工作(如果没有,请报告,我会再拿一个看)。

【讨论】:

  • 谢谢。我会在家里试试。
  • 你赢了。是的,这完美无缺。现在我只是想不通为什么我之前错过了它......