我使用的是windows窗体。其中有一个选项卡控件和三个选项卡页面。在第一个选项卡页面中,我有一个组合框。其从数据库加载一些数据。我需要在表2和表3中使用这个组合框。当用户选择选项卡2时,组合框应该是可见的。我怎样才能做到这一点。
我能想到两种解决方案。
-
将组合框移出选项卡控件。由于所有选项卡都使用相同的组合框,因此它提供了非特定于选项卡的功能。从设计角度来看,这是最有意义的,因为您将避免3个组合框之间的冗余。
-
为每个选项卡创建3个单独的组合框,并使每个组合框引用相同的集合。一旦用户选择了一个项目,不要忘记更新所有3个组合框中的所选项目。也不要认为这将需要比第一个解决方案更多的代码更改。
将组合框放在第一个选项卡上。然后将事件处理程序添加到选项卡控件的SelectedIndexChanged事件中,并将以下代码放入其中:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
tabControl1.SelectedTab.Controls.Add(this.comboBox1);
}
Add
将自动将其从以前所在的选项卡中删除。当然,您必须在组合框所在的所有选项卡上提供可用空间。
我尝试过,使用VB代码:TabStrip1.SelectedTab.Controls.Add(*controlname*)
进行切换,但一旦它从原始页面切换到新页面,切换回原始选项卡似乎就不起作用了。刚刚发现使用*controlname*.BringToFront
会让它再次占据榜首。