清除多个控件

时间:2011-04-18 18:59:33

标签: c# winforms

您好  在我的表单中,我使用了多个容器,例如面板,组合框。根据我的要求,我必须清除所有驻留在容器中的控件。为此,我编写了如下代码: -

foreach (Control  x in ControlContainer.Controls)//Error
{
    if (x is System.Windows.Forms.TextBox)
        ((TextBox)x).Text  = String.Empty;

    else  (x is System.Windows.Forms.ComboBox)
    {
        ((ComboBox)x).SelectedIndex = -1;
        ((TextBox)x).Text = String.Empty;
    }
}

但它不能正常工作,我收到的错误如下:'object'不包含'Controls'的定义

请帮助

3 个答案:

答案 0 :(得分:0)

ControlContainer的声明类型是什么?从错误来看,它是“对象”。大多数容器都继承自System.Windows.Controls.Panel,因此您可以使用:

Panel panel = ControlContainer as Panel;
foreach (Control x in panel.Children) { ... }

答案 1 :(得分:0)

来自ASP.NET Forums的一些递归示例:

public static void ClearTxtBox(Control control)
{
    foreach (Control ctrl in control.Controls)
    {
        if (ctrl is TextBox)
            (TextBox)ctrl.Text = "";
         if (ctrl.HasControls())   
             ClearTxtBox(ctrl);
    }
}

我认为ControlContainer不会以您的思维方式返回控件。

答案 2 :(得分:0)

只需使用:

 foreach (Control item in (groupBox1 as Control).Controls)
        {
            if (item is TextBox)
            {
                item.Text = "";
            }
            if (item is ComboBox)
            {
                (item as ComboBox).SelectedIndex = -1;
                (item as ComboBox).Text = "";

            }
        }

它可以是groupBox1或面板或任何其他使用Control作为基础。