【问题标题】:VB.NET Add TabPage with Indexed LabelVB.NET 添加带有索引标签的 TabPage
【发布时间】:2017-12-06 01:44:26
【问题描述】:

你想完成什么?

我想将 TabPage 添加到具有索引名称的标签的预先存在的 TabControl 中。

    Private Sub BtnAddReport_Click(sender As Object, e As EventArgs) Handles BtnAddReport.Click

    Dim rep As New OpenFileDialog
    rep.Title = "Add Report"
    rep.InitialDirectory = "C:\Customers"
    rep.FileName = ""
    rep.DefaultExt = ".html"
    rep.Filter = "HTML Documents|*.html"
    rep.Multiselect = False
    If rep.ShowDialog() = DialogResult.OK Then

        Dim newTab As TabPage = New TabPage With {.Text = Path.GetFileName(rep.FileName)}
        TabControl2.Controls.Add(newTab)

        Dim i As Integer
        For i = 1 To TabControl2.TabPages.Count
            Dim lbl As Label = New Label With {.Text = "Label" & i, .Location = New Point(3, 3)}
            newTab.Controls.Add(lbl)
        Next

    End If

End Sub

您期望结果是什么?

每次单击按钮时,都会添加一个新选项卡,其中包含名为“Label1”、“Label2”等的标签。

你得到的实际结果是什么?

这段代码创建了一个新的标签页并添加了标签,但它始终命名为 Label1 并且不会增加 1。

【问题讨论】:

    标签: vb.net loops tabpage


    【解决方案1】:

    为什么你有一个For 循环在那里?你只想加一个Label,对吧?您应该创建一个TabPage,创建一个Label,将Label 添加到TabPage,然后将TabPage 添加到TabControl

    Dim newTab As TabPage = New TabPage With {.Text = Path.GetFileName(rep.FileName)}
    Dim lbl As Label = New Label With {.Text = "Label" & (TabControl2.TabPages.Count + 1), .Location = New Point(3, 3)}
    
    newTab.Controls.Add(lbl)
    TabControl2.TabPages.Add(newTab)
    

    【讨论】:

    • 哇,我想得太多了。摆脱 For 循环并按照您所说的做完美的工作。再次感谢 jmcilhinney
    • 还有一件事。在运行时如何引用每个标签?那么我必须使用 For 循环吗?
    • 您可以使用ForFor Each 循环来访问每个TabPage,然后在循环内部,通过索引Controls 来访问当前TabPageLabel收藏。或者,保留一个单独的 List(Of Label) 并添加 label 控件并循环它。
    • 你永远不会让我失望,先生。谢谢一百万
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多