我有一个带有两个标签的标签控件。两个选项卡都有对它们唯一的控件,但有一个控件我希望始终显示在当前活动的任何选项卡上。
我想我只需要向TabControl1_SelectedIndexChanged()
添加一些代码。
我试过
MyControl.Parent = TabControl1.TabPages(
TabControl1.TabPages.IndexOf(TabControl1.SelectedTab))
MyControl.Parent.Update() ' is this necessary?
我也试过
TabControl1.TabPages(
TabControl1.TabPages.IndexOf(TabControl1.SelectedTab)).Controls.Add(SeMyControl)
但两个都没有用(控件移动一次,但当我回到原始标签时,控件没有出现在那里。
谷歌发现有人建议TabControl1.TabPages(TabControl1.TabIndex).Controls.Add(MyControl)
但由于控件永远不会从旧标签中删除,因此看起来很狡猾,因此重复切换可能会多次添加控件。
我觉得我很亲密,但不是很......我该怎么做?
答案 0 :(得分:1)
使用您关注的第二个代码段,因为它不会将其从原始标签中删除,为什么不在将其添加到新标签页之前将其从原始标签中删除?
可能是这样的:TabControl1.TabPages(TabControl1.TabIndex).Controls.Remove(MyControl)
答案 1 :(得分:1)
不,这可以正常工作,因为Controls.Add()更改了Parent属性。这会自动将其从之前的标签页中删除。控件实例只能有一个父级。
更直接的方法是简单地不将控件放在标签页上,但将其作为较低Z顺序的表格的父级,因此它始终位于标签控件的顶部。唯一的问题是设计师会麻烦你。当您将控件移动到选项卡控件的顶部时,它会自动将控件吸入选项卡页面。解决这个问题的一个技巧是将它从选项卡控件中删除,并在表单构造函数中更改其Location属性。