none
vb2008中,如何控制TabPage中的控件? RRS feed

  • 问题

  • 我在TabPage中加载了一个窗体(form1),窗体中有一些控件,比如说是Grid1的控件吧,现在我通过循环找的了这个TabPage,我想对Form1中的Grid1进行操作,例如重新绑定数据,等等,
    2009年9月8日 14:44

答案

  • 设置Grid1。Modifiers =TRUE

    直接访问
    form1变量.Grid1


    http://feiyun0112.cnblogs.com/
    2009年9月9日 0:52
    版主
  • If myChildForm Is Nothing Then Exit Sub
            For Each tb As TabPage In TabControl1.TabPages
                If tb.Text = strText Then
                    If tb.Tag = TabControl1.TabPages.Count - 1 Then
                        myChildForm.Dispose()
                        myChildForm = Nothing
                        Exit Sub
                    End If
                    For Each tbx As TabPage In TabControl1.TabPages
                        If Val(tbx.Tag) > Val(tb.Tag) Then
                            If tbx.Tag = TabControl1.TabPages.Count - 1 Then
                                If tbx.Controls(0).Controls("ToolStrip1") IsNot Nothing Then
                                    ToolStripManager.RevertMerge(ToolStrip1, tbx.Controls(0).Controls("ToolStrip1"))
                                End If
                            End If
                            tbx.Tag = Val(tbx.Tag) - 1
                        End If
                    Next
                    If tb.Controls(0).Controls("ToolStrip1") IsNot Nothing Then ToolStripManager.Merge(tb.Controls(0).Controls("ToolStrip1"), ToolStrip1)
                    tb.Tag = TabControl1.TabPages.Count - 1
                    TabControl1.SelectedTab = tb
                    myChildForm.Dispose()
                    myChildForm = Nothing
                    Exit Sub
                End If
            Next
            For Each tb As TabPage In TabControl1.TabPages
                If tb.Tag = TabControl1.TabPages.Count - 1 Then
                    If tb.Controls(0).Controls("ToolStrip1") IsNot Nothing Then
                        ToolStripManager.RevertMerge(ToolStrip1, tb.Controls(0).Controls("ToolStrip1"))
                    End If
                End If
            Next
            Dim myTab As New TabPage
            If myChildForm.Controls("ToolStrip1") IsNot Nothing Then ToolStripManager.Merge(myChildForm.Controls("ToolStrip1"), ToolStrip1)
            TabControl1.TabPages.Add(myTab)
            myTab.Tag = TabControl1.TabPages.Count - 1
            myTab.Text = strText
            TabControl1.SelectTab(myTab)
            myChildForm.Text = strText
            myChildForm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            myChildForm.TopLevel = False
            myChildForm.Dock = DockStyle.Fill
            myTab.Controls.Add(myChildForm)
            myChildForm.Show()
            If BtClose.Visible = False Then BtClose.Visible = True
    这是我的代码,请帮忙看看,例外上面的问题我解决啦
    dim frm as form1= TabPage.Controls(0)
    with frm
        .......
    end with

    • 已标记为答案 Weber Li 2009年9月10日 6:20
    2009年9月9日 0:54
  • Hi Mik Li,

    对于这个问题,如果你要直接在form1里访问这个Grid1,就直接用Me.Grid1访问,没必要做任何改动,如果想要循环获取到,那就循环TabPages,得到后循环Controls,把Control转换成你要的那个Grid1的类型。

    Sincerely,
    Kira Qian
    Please mark the replies as answers if they help and unmark if they don't.
    • 已标记为答案 Weber Li 2009年9月10日 10:52
    2009年9月10日 3:40

全部回复

  • 你好!
         请问你是怎样在TabPage中加载一个窗体的呢?
    周雪峰
    2009年9月8日 16:00
    版主
  • 设置Grid1。Modifiers =TRUE

    直接访问
    form1变量.Grid1


    http://feiyun0112.cnblogs.com/
    2009年9月9日 0:52
    版主
  • If myChildForm Is Nothing Then Exit Sub
            For Each tb As TabPage In TabControl1.TabPages
                If tb.Text = strText Then
                    If tb.Tag = TabControl1.TabPages.Count - 1 Then
                        myChildForm.Dispose()
                        myChildForm = Nothing
                        Exit Sub
                    End If
                    For Each tbx As TabPage In TabControl1.TabPages
                        If Val(tbx.Tag) > Val(tb.Tag) Then
                            If tbx.Tag = TabControl1.TabPages.Count - 1 Then
                                If tbx.Controls(0).Controls("ToolStrip1") IsNot Nothing Then
                                    ToolStripManager.RevertMerge(ToolStrip1, tbx.Controls(0).Controls("ToolStrip1"))
                                End If
                            End If
                            tbx.Tag = Val(tbx.Tag) - 1
                        End If
                    Next
                    If tb.Controls(0).Controls("ToolStrip1") IsNot Nothing Then ToolStripManager.Merge(tb.Controls(0).Controls("ToolStrip1"), ToolStrip1)
                    tb.Tag = TabControl1.TabPages.Count - 1
                    TabControl1.SelectedTab = tb
                    myChildForm.Dispose()
                    myChildForm = Nothing
                    Exit Sub
                End If
            Next
            For Each tb As TabPage In TabControl1.TabPages
                If tb.Tag = TabControl1.TabPages.Count - 1 Then
                    If tb.Controls(0).Controls("ToolStrip1") IsNot Nothing Then
                        ToolStripManager.RevertMerge(ToolStrip1, tb.Controls(0).Controls("ToolStrip1"))
                    End If
                End If
            Next
            Dim myTab As New TabPage
            If myChildForm.Controls("ToolStrip1") IsNot Nothing Then ToolStripManager.Merge(myChildForm.Controls("ToolStrip1"), ToolStrip1)
            TabControl1.TabPages.Add(myTab)
            myTab.Tag = TabControl1.TabPages.Count - 1
            myTab.Text = strText
            TabControl1.SelectTab(myTab)
            myChildForm.Text = strText
            myChildForm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            myChildForm.TopLevel = False
            myChildForm.Dock = DockStyle.Fill
            myTab.Controls.Add(myChildForm)
            myChildForm.Show()
            If BtClose.Visible = False Then BtClose.Visible = True
    这是我的代码,请帮忙看看,例外上面的问题我解决啦
    dim frm as form1= TabPage.Controls(0)
    with frm
        .......
    end with

    • 已标记为答案 Weber Li 2009年9月10日 6:20
    2009年9月9日 0:54
  • 你好,弱弱的问下楼主你是怎样将Form包含在TabPanel中的?
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月9日 1:01
    版主
  • 代码在上面,只是我个人凑合的,不知道对你适用不适用
    2009年9月9日 1:03
  • Hi Mik Li,

    对于这个问题,如果你要直接在form1里访问这个Grid1,就直接用Me.Grid1访问,没必要做任何改动,如果想要循环获取到,那就循环TabPages,得到后循环Controls,把Control转换成你要的那个Grid1的类型。

    Sincerely,
    Kira Qian
    Please mark the replies as answers if they help and unmark if they don't.
    • 已标记为答案 Weber Li 2009年9月10日 10:52
    2009年9月10日 3:40