C# 从选项卡页删除控件
我试图删除运行时在选项卡页面上创建的按钮。我创建了一个函数,该函数应该遍历该选项卡页上的所有控件,但由于某些原因,每次调用该函数时,只会删除一半的按钮。(页面上有8个按钮,我希望全部删除) 我甚至试着做了以下几件事,但都遇到了同样的问题C# 从选项卡页删除控件,c#,tabpage,C#,Tabpage,我试图删除运行时在选项卡页面上创建的按钮。我创建了一个函数,该函数应该遍历该选项卡页上的所有控件,但由于某些原因,每次调用该函数时,只会删除一半的按钮。(页面上有8个按钮,我希望全部删除) 我甚至试着做了以下几件事,但都遇到了同样的问题 for (int i = 0; i < 8; i++) { tabControl.SelectedTab.Controls.Remove( ((Button)tabControl.SelectedTab.Contr
for (int i = 0; i < 8; i++)
{
tabControl.SelectedTab.Controls.Remove(
((Button)tabControl.SelectedTab.Controls[i]));
}
for(int i=0;i<8;i++)
{
tabControl.SelectedTab.Controls.Remove(
((按钮)tabControl.SelectedTab.Controls[i]);
}
但是,当我尝试调试时,它只识别tabPage上的第1、第3、第5和第7个按钮,并且只删除它们,剩下4个。如果我再试一次,它会删除一半,剩下2个。我初始化每个按钮如下
for (int i = 0; i < 8; i++)
{
tempButton[i] = new Button();
tabControl.SelectedTab.Controls.Add(tempButton[i]);
tempButton[i].AutoSize = true;
tempButton[i].Location = new System.Drawing.Point(
100 + (150 * (i % 4)), 175 + (175 * (int)(.25 * i)));
//tempButton[i].Name = "tempButton" + i.ToString();
tempButton[i].Text = names[i];
tempButton[i].Size = new System.Drawing.Size(35, 13);
tempButton[i].TabIndex = i;
}
for(int i=0;i<8;i++)
{
tempButton[i]=新按钮();
tabControl.SelectedTab.Controls.Add(tempButton[i]);
tempButton[i]。自动调整大小=真;
tempButton[i]。位置=新系统.Drawing.Point(
100+(150*(i%4)),175+(175*(int)(.25*i));
//tempButton[i].Name=“tempButton”+i.ToString();
tempButton[i].Text=名称[i];
tempButton[i]。尺寸=新系统。图纸。尺寸(35,13);
tempButton[i].TabIndex=i;
}
当您移除控件[i]时,下一次控件[i]已经更改,因为第二个按钮可能是移除按钮后的第一个按钮
您可以尝试获取所有按钮并将其保存到临时集合,而不是直接使用SelectedTab引用它们。控件[i]:
var buttons = tabControl.SelectedTab.Controls.OfType<Button>()
for (int i = 0; i < buttons.Count; i++) {
tabControl.SelectedTab.Controls.Remove(buttons[i]);
}
var buttons=tabControl.SelectedTab.Controls.OfType()
对于(int i=0;i
var buttons = tabControl.SelectedTab.Controls.OfType<Button>()
for (int i = 0; i < buttons.Count; i++) {
tabControl.SelectedTab.Controls.Remove(buttons[i]);
}