.netのタブコントロールで、タブの表示非表示を切り替える関数

tagにタブ情報を保持するので、この関数以外なにも無くても表示非表示を切り替えられる。
tagを他の用途に使っていると利用不可能。
作ったはいいが、ちょっとこれどうよってほどコードが見にくくなってしまって微妙。

Private Sub SetTabVisible(ByVal oTabControl As TabControl, ByVal nIndex As Integer, ByVal bVisible As Boolean)
    Dim oAllTabPages As List(Of KeyValuePair(Of TabPage, Boolean))

    ' 
    If oTabControl.Tag Is Nothing Then
        ' 全タブと、その表示状態を保持
        oAllTabPages = New List(Of KeyValuePair(Of TabPage, Boolean))
        For Each oTabPage As TabPage In TabControl1.TabPages
            Dim oTabAndVisible As New KeyValuePair(Of TabPage, Boolean)(oTabPage, True)
            oAllTabPages.Add(oTabAndVisible)
        Next
        oTabControl.Tag = oAllTabPages
    Else
        ' 全タブと、その表示状態を取得
        oAllTabPages = CType(oTabControl.Tag, List(Of KeyValuePair(Of TabPage, Boolean)))
    End If

    ' タブの表示状態を設定
    oAllTabPages(nIndex) = New KeyValuePair(Of TabPage, Boolean)(oAllTabPages(nIndex).Key, bVisible)

    oTabControl.TabPages.Clear()
    For Each oTabAndVisible As KeyValuePair(Of TabPage, Boolean) In oAllTabPages
        If oTabAndVisible.Value = True Then
            oTabControl.TabPages.Add(oTabAndVisible.Key)
        End If
    Next

End Sub