65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的标签式 MDI

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.88/5 (11投票s)

2005年3月12日

2分钟阅读

viewsIcon

80857

downloadIcon

1582

使用选项卡控件管理 MDI 子窗体。

Sample Image - simpleTabbedMDI.jpg

引言

我尝试使用选项卡控件来跟踪打开的 MDI 子窗体。这部分是我学习 .NET 的过程,从 VB6 过渡过来,需要了解如何完成基本操作。

我的团队正在重写一个大型遗留应用程序,我们一直在努力建立一个 GUI 框架。我们不希望子窗体出现在 Windows 任务栏上,但仍然希望用户能够以类似的方式在窗体之间切换。

关键组件

选项卡控件具有我们所需的所有功能、外观和感觉。我们需要的是一种将窗体链接到选项卡页面的方法。因此,我们创建了一个私有变量,作为 TabPage 对象来保存选项卡页面,基本上是窗体的描述。

我们如何将此选项卡页面添加到位于 MDI 窗体上的选项卡控件中?这时,属性 ParentFormFriend 函数标识符就派上用场了。

当子窗体加载时,我们将一个变量设置为子窗体的 ParentForm,这指向 MDI 窗体。在 MDI 窗体上,我们有两个函数,AddTabPageRemoveTabPage

Friend Sub AddTabPage(ByVal tp As TabPage)
    With TabControl1
        .TabPages.Add(tp)
        .SelectedTab = tp
    End With

End Sub
Friend Sub RemoveTabPage(ByVal tp As TabPage)
    TabControl1.TabPages.Remove(tp)

End Sub

使用 Friend 标识符允许从子窗体调用这些方法。因此,当子窗体加载时,我们调用 AddTabPage,当窗体关闭时,我们调用 RemoveTabPage

Private Sub Form2_Load(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) Handles MyBase.Load
    pForm = Me.ParentForm
    pForm.AddTabPage(tp)

End Sub
Private Sub Form2_Closing(ByVal sender As Object, _ 
          ByVal e As System.ComponentModel.CancelEventArgs) _
          Handles MyBase.Closing
    pForm.RemoveTabPage(tp)

End Sub

最后一步

当选项卡控件页面更改时该怎么办?我们使用了子窗体的最小化和最大化。由于 MDI 子窗体和选项卡页面是并行管理的,因此 MDIChildren 集合的索引与选项卡页面对应。因此,我们只需要最大化与所选选项卡页面的索引对应的窗体。

Private Sub TabControl1_SelectedIndexChanged( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles TabControl1.SelectedIndexChanged

Dim i As Integer
    If TabControl1.TabPages.Count > 0 Then
        For i = 0 To Me.MdiChildren.Length - 1
            If i = TabControl1.SelectedIndex Then
                Me.MdiChildren(i).WindowState = FormWindowState.Maximized
            Else
                Me.MdiChildren(i).WindowState = FormWindowState.Minimized
            End If
        Next
    End If

End Sub

结论

这似乎对我们有效,我们认为它非常简单,并且没有找到类似的东西。

© . All rights reserved.