[英]Deleting controls from a tabPage
我试图删除tabPage上运行时生成的按钮。 我创建了一个应该遍历该tabPage上所有控件的函数,但由于某些原因,每次调用时只有一半的按钮被删除。 (页面上有8个按钮,我希望全部删除)
foreach(var ctr in tabControl.SelectedTab.Controls)
{
if (ctr is Button)
{
if (ctr is Button) { tabControl.SelectedTab.Controls.Remove((Button)ctr); }
}
}
我甚至试过做以下事情,只遇到同样的问题,
for (int i = 0; i < 8; i++)
{
tabControl.SelectedTab.Controls.Remove(
((Button)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;
}
当您删除Controls [i]时,下次CONTROL [i]发生更改时,第二个按钮可能是删除按钮后的第一个按钮。
您可能尝试获取所有按钮并将其保存到临时集合,而不是使用SelectedTab.Controls [i]直接引用它们:
var buttons = tabControl.SelectedTab.Controls.OfType<Button>()
for (int i = 0; i < buttons.Count; i++) {
tabControl.SelectedTab.Controls.Remove(buttons[i]);
}
顺便说一句:您可以考虑通过更改Visible属性来隐藏这些按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.