如何在运行时c#Windows中将控件从一个选项卡页转移到另一个选项卡页面



我使用的是windows窗体。其中有一个选项卡控件和三个选项卡页面。在第一个选项卡页面中,我有一个组合框。其从数据库加载一些数据。我需要在表2和表3中使用这个组合框。当用户选择选项卡2时,组合框应该是可见的。我怎样才能做到这一点。

我能想到两种解决方案。

  1. 将组合框移出选项卡控件。由于所有选项卡都使用相同的组合框,因此它提供了非特定于选项卡的功能。从设计角度来看,这是最有意义的,因为您将避免3个组合框之间的冗余。

  2. 为每个选项卡创建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会让它再次占据榜首。

相关内容

最新更新