C# 动态修改winform选项卡页

C# 动态修改winform选项卡页,c#,winforms,dynamic,tabs,C#,Winforms,Dynamic,Tabs,我有一组选项卡页面,需要在运行时更改这些页面的内容(控件)。页面可能由组合框、文本框和标签组成,我想用一个按钮替换整个选项卡。我读到的是,这样做的方法是删除选项卡页面,而不是在页面上的所有控件上循环设置它们的可见性,这根本不起作用。我有以下代码: foreach (TabPage t in tabControl1.TabPages) { tabControl1.Controls.Remove(t); } newPanelButton = new Button(); newPanelBu

我有一组选项卡页面,需要在运行时更改这些页面的内容(控件)。页面可能由组合框、文本框和标签组成,我想用一个按钮替换整个选项卡。我读到的是,这样做的方法是删除选项卡页面,而不是在页面上的所有控件上循环设置它们的可见性,这根本不起作用。我有以下代码:

foreach (TabPage t in tabControl1.TabPages)
{
    tabControl1.Controls.Remove(t);
}

newPanelButton = new Button();
newPanelButton.Text = "0% Complete";
newPanelButton.Location = new Point(117, 75);
newPanelButton.Height = 80;
newPanelButton.Width = 200;

TabPage tabPage = new TabPage();
tabPage.Controls.Add(newPanelButton);

tabControl1.Controls.Add(tabPage);            

Refresh();

这个代码没有任何影响,就好像它根本不存在一样。现有控件和页面根本不会更改。我缺少什么?

tabControl1.Controls.Add(tabPage)

应该是


tabControl1.TabPages.Add(tabPage)

您应该使用tabcontrol.TabPages属性从tabcontrol中删除/添加页面

您的代码应该是(我在这里和那里缩短了它):


您是否已检查此代码是否正在实际执行?为什么要使用“tabControl1.tabpages.Remove(t);”删除tabpages,以及添加带有“tabControl1.Controls.Add(tabpage);”的选项卡页?我的第一个建议是保持添加/删除tabpage的方法同步。是的,代码正在执行。如果不删除选项卡页,那么更改选项卡页内容的方法是什么?tabPage.Controls.Clear()这没有什么区别。所有现有控件都保留在页面上,没有任何更改。我还尝试将页面上所有控件的可见性设置为false。这也不起作用。您确定代码正在运行吗?或者表单上是否有多个选项卡控件?是的,这非常令人困惑。我在调试器中逐步完成代码。这是应用程序中唯一的选项卡控件。似乎我所做的任何事情都不会修改页面的内容。我可能不得不尝试一个独立的测试作为一个健全的检查。
tabControl1.TabPages.Clear();

var newPanelButton = new Button() {
    Text = "0% Complete",
    Location = new Point(117, 75),
    Height = 80,
    Width = 200
};

var tabPage = new TabPage();
tabPage.Controls.Add(newPanelButton);

tabControl1.TabPages.Add(tabPage);