繁体   English   中英

从tabPage中删除控件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM