【发布时间】:2017-04-29 10:38:58
【问题描述】:
当用户选择不同的标签页时,我试图在 3 个标签页之间移动 3 个控件。它们是工具提示控件、richtextbox 控件和组合框控件。
richtextbox 和 combobox 将根据所选标签页为其某些属性分配新值,工具条应该相同,但它的方法(它是典型的字体样式处理工具条)应该会影响可见的richtextbox仅在当前标签页上。
现在,因为更改组合框的显示值也意味着当前标签页上的 Richtextbox 将为其 text 属性分配一个新值,所以我不想每次都创建 3 个组合框和 50 个 Richtextbox。在使用引发事件之前,我只想创建一组并将它们的值保存在某种类型的字符串集合中,即更改组合框显示的项目或更改标签页。
在我阅读本文之前没有这样做 http://www.vbforums.com/showthread.php?478602-2005-Move-controls-From-One-Tab-Page-To-Another 建议为它的场合创建一个控件,这对我来说似乎很荒谬......
我目前的情况是我通过设计器在 tabpage1 上显示了控件,然后我尝试了类似的操作
Private Sub TabPage_Enter(sender As Object, e As EventArgs) Handles TabPage1.Enter, TabPage2.Enter, TabPage3.Enter
Select Case DirectCast(sender, TabPage).Name
Case "Tabpage1"
TabPage1.Controls.Add(RichTextBox1)
TabPage1.Controls.Add(ToolStrip1)
TabPage1.Controls.Add(ComboBox1)
Case "TabPage2"
TabPage2.Controls.Add(RichTextBox1)
TabPage2.Controls.Add(ToolStrip1)
TabPage2.Controls.Add(ComboBox1)
Case "TabPage3"
TabPage3.Controls.Add(RichTextBox1)
TabPage3.Controls.Add(ToolStrip1)
TabPage3.Controls.Add(ComboBox1)
End Select
End Sub
现在,当更改选项卡时,控件会出现在 tabpage2 和 tabpage3 上,但 tabpage1 保持为空。我尝试在表单加载事件中这样做
TabPage1.Controls.Add(RichTextBox1)
TabPage1.Controls.Add(ToolStrip1)
TabPage1.Controls.Add(ComboBox1)
但是当切换回它的视图时 tabpage1 仍然是空的。我不确定我正在尝试的是我想要做什么,但我知道对于这种方法,我根本不应该使用设计器,而是只在自己的代码处理大小和位置中创建控件。请告知是否有这样做的“正确”方式,主要是为了保持代码简短和整洁。 TIA。
ps.当我写这篇文章时,我意识到我可以在设计器中为每个标签页创建每个控件中的三个,然后使用我想到的字符串集合方式处理组合框更改。似乎很明智,但我仍然想知道这一点,因此我仍然在问这个问题。
【问题讨论】:
-
“Tabpage1”是否应该在您的案例语句中使用大写“P”,以匹配您的 TabPage1 名称?
-
这很好发现,我正在寻找一个错字,但因为我专注于排序数字 1,2,3 我没有注意到 :D
-
所以显然控件现在出现在第一个选项卡上(该死的,我在发这篇文章之前检查了 3 次,我没有发现错字):P 但我想知道当我' m 在标签页上添加控件,每次输入事件触发?这是这样做的方法吗?我想我会在我编写代码的过程中找到答案。但是,如果有更好的方法,请将其添加为答案,或者通过内容丰富的帖子来回答持续添加控件会发生什么。 TIA
-
我觉得整个策略有点奇怪。您是否考虑在添加控件之前测试该控件是否在标签页上?
-
我为第一个选项卡放置了一个计数器,因此它仅在计数器
标签: vb.net controls tabcontrol tabpage