【问题标题】:danamically creating controlltabs that can be used动态地创建可以使用的控制选项卡
【发布时间】:2013-09-23 15:44:27
【问题描述】:

我正在尝试动态创建工作正常的选项卡控件;但是,正在创建选项卡。一旦创建,我还希望它们变得可点击并执行其他代码,这现在带来了问题。

我用来创建标签的代码如下

            ' do whatever wtih filename
        Dim myTabPage As New TabPage()
        myTabPage.Text = TextBox4.Text
        TabControl1.TabPages.Add(myTabPage)

        TabPage1.Hide()

不太好,因为我现在可以在表单中填写我喜欢的选项卡,但是没有一个可以单击以执行更多代码???

编辑:

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

    Dim TabName As String

    TabName = TabControl1.SelectedTab.Name

    If TabName.Contains("TabPage") Then
        ' Do something

        MsgBox("new tab created")
    End If
End Sub

【问题讨论】:

  • 您的意思是TabControl1.TabPages.Add(myTabPage)?不太清楚“单击”选项卡时您期望发生什么。
  • eer 是的,对不起,我做到了,但这不是解决方案 :)
  • 我希望有一个 msgbox("new tab clicked") 被执行
  • 因此,您创建了一个新的 TabPage。现在您必须向其添加控件或 UserControl。
  • 类似的东西请查看编辑以了解我想要什么

标签: vb.net tabcontrol


【解决方案1】:

您必须为 TabPage 点击事件添加一个事件处理程序:

Dim myTabPage As New TabPage
myTabPage.Text = TextBox4.Text
AddHandler myTabPage.Click, AddressOf TabPage1_Click
TabControl1.TabPages.Add(myTabPage)

将调用此代码:

Private Sub TabPage1_Click(sender As Object, e As EventArgs)
  MessageBox.Show(DirectCast(sender, TabPage).Text)
End Sub

根据您的编辑,您必须添加 name 属性:

myTabPage.Name = TextBox4.Text

还有你的 SelectedIndexChanged 事件:

Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) _
                                        Handles TabControl1.SelectedIndexChanged
  If TabControl1.SelectedTab IsNot Nothing Then
    MessageBox.Show(TabControl1.SelectedTab.Name)
  End If
End Sub

【讨论】:

  • @ABANDONDACOUNT 假设您正在谈论 SelectedIndexChanged 事件,那么您必须确保在创建 TabPage 时设置 name 属性。请参阅示例中上面的代码。如果它仍然是空的,请确保您在 TextBox4 中有一个值,因为这是名称的来源。
猜你喜欢
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
相关资源
最近更新 更多