以VB.NET编程方式隐藏/删除选项卡页

4

我有一个包含10个选项卡的表单。基于文本框中的输入,我想要通过程序删除一定数量的选项卡,例如如果文本框输入为3,则只有前三个选项卡应该可见,选项卡4到10必须被删除或不可见。 我尝试了以下代码,但并没有成功:

For i = 0 To 9
Form1.TabControl1.TabPages.Remove(Form4.TabControl1.TabPages((val(textbox1.text)) + i))
Next

上述语句没有生成任何异常或错误。

这些语句有什么问题?


请查看此链接 - https://dev59.com/GHA75IYBdhLWcg3wT3P8 - rs.
选项卡页面没有可见属性,可见属性属于选项卡控件而不是页面,因此上一个答案是错误的。似乎删除是隐藏选项卡页面的唯一方法。 - user2309679
3个回答

5

请检查这个。

    For i As Integer = TextBox1.Text + 1 To 9

        Form1.TabControl1.TabPages.Remove(Form4.TabControl1.TabPages(TextBox1.Text + 1))

    Next

或者
    For index As Integer = 9 To TextBox1.Text + 1 Step -1

        Me.TabControl1.TabPages.Remove(Me.TabControl1.TabPages(index))
    Next

永远不要在程序中使用未经过滤的输入。 - Christian Sauer

2

永远不要使用未经过滤的输入。

将Textbix1.Text输入放入一个integer.tryparse结构中。

此外,激活Option strict以获得更好的代码质量。

针对您的问题:

Dim MaxVisible as Integer
Dim Sucess as Boolean
Sucess=Integer.Tryparse(textbox1.text, MaxVisible)
If Sucess=True

For index As Integer = 9 To MaxVisible  + 1 Step -1
 Me.TabControl1.TabPages(Index).visible=false
End If

这将使不需要的选项卡控件变得不可见。我不知道TabPages(index)是否有效,也许你必须使用GetItems来代替-我手头没有Winforms项目进行测试。有关TabControl的更多信息:http://msdn.microsoft.com/de-de/library/system.windows.forms.tabcontrol.aspx


2

实际上,还有另一种方法可以很好地弥补缺乏可见性属性的不足。

在选项卡页面本身上,将父级属性设置为Nothing以隐藏它。 当您想要显示选项卡页面时,请将tabpage.parent设置为选项卡控件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接