我的表格上有 10 个标签页。基于文本框中的输入,我想以编程方式删除标签页的数量,即如果文本框输入为 3,则只有前 3 个标签页应该可见,而第 4 到 10 个标签页必须被删除或不可见。我尝试跟随但没有成功,
For i = 0 To 9
Form1.TabControl1.TabPages.Remove(Form4.TabControl1.TabPages((val(textbox1.text)) + i))
Next
(以上语句不会产生异常或错误)
这些陈述有什么问题?
我的表格上有 10 个标签页。基于文本框中的输入,我想以编程方式删除标签页的数量,即如果文本框输入为 3,则只有前 3 个标签页应该可见,而第 4 到 10 个标签页必须被删除或不可见。我尝试跟随但没有成功,
For i = 0 To 9
Form1.TabControl1.TabPages.Remove(Form4.TabControl1.TabPages((val(textbox1.text)) + i))
Next
(以上语句不会产生异常或错误)
这些陈述有什么问题?
检查这个。
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
切勿使用未经过滤的输入。将 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
实际上,还有另一种方法可以很好地弥补可见性属性的不足。
在标签页本身上,将 parent 属性设置为 Nothing 以隐藏它。当你想显示标签页时,将 tabpage.parent 设置为标签控件。