1

我在基础架构(C# Windows 应用程序)中将 UltraTabPageControl 绑定到 BaseForm。

当我关闭 ultraTabPageControl 窗口时会触发哪个事件?

显然可以使用 baseform_closure ,但我不需要在这个事件中编写我的代码,因为绑定到 BaseForm 的用户控件的数量更多。

我需要在 ultraTabPageControl 的关闭事件上编写一段代码。

请让我知道如何处理 UltraTabPageControl 的关闭事件。

4

1 回答 1

1

UltraTabControl 有一个TabClosedTabClosing事件。
这些事件与托管 UltraTabPageControl 的 UltraTab 的关闭有关。

事件处理程序接收类型参数TabClosingEventArgsTabClosedEventArgs包含与此事件相关的数据。

每个 UltraTab 都记录在 UltraTabConrol 的 Tabs 集合中。每个 UltraTab 都有自己的 UltraTabPageControl

我认为与标准窗口选项卡控件的这些差异是由于存在“共享页面”,其中托管的控件在每个 UltraTabPageControl 上都可见

代码示例更好地解释了层次结构

    // Call BeginUpdate to prevent the display from
    // refreshing as we add individual tabs.
    // Note: This MUST be paired with a call to
    // EndUpdate below.
    this.ultraTabControl1.BeginUpdate();

    UltraTab tabAdded;
    UltraTabsCollection tabs = this.ultraTabControl1.Tabs;

    // Add a tab to the Tabs collection
    tabAdded = tabs.Add("options", "&Options");

    // Create a new control
    TextBox tb = new TextBox();
    tb.Location = new Point(20,20);
    tb.Size = new Size(80, 20);

    // Add the control to the tab's tab page
    tabAdded.TabPage.Controls.Add(tb );

    // Call EndUpdate to allow the display to refresh
    this.ultraTabControl1.EndUpdate();

编辑:

当您关闭应用程序的主窗体时,框架调用的事件顺序如下:

MAINFORM - FormClosing
MAINFORM - FormClosed
MAINFORM - Deactivate
MAINFORM - HandleDestroyed
CONTROL - HandleDestroyed
   .... - repeat for each control
CONTROL - Disposed
   .... - repeat for each control
MAINFORM - Disposed

如您所见,当您收到 FormClosing 事件时,UltraTabControl 及其所有页面应该仍然可用。基本属性 IsDisposed 在那个时候应该仍然是假的,因此没有 TabControl 被“关闭”

现在我有一个疑问 - 我们正在谈论 WinForms 应用程序,对吗?

于 2012-11-16T13:53:10.527 回答