C# 清除Splitcontainer-C中的复选框和文本框

C# 清除Splitcontainer-C中的复选框和文本框,c#,winforms,checkbox,textbox,C#,Winforms,Checkbox,Textbox,我正在尝试清除splitcontainer第一个面板中的所有复选框和文本框,但我没有运气,因为似乎什么都没有发生 private void clearSettingsBtn_Click(object sender, EventArgs e) { foreach (Control c in splitContainer1.Panel1.Controls) { if (c is CheckBox) { ((CheckBox)c)

我正在尝试清除splitcontainer第一个面板中的所有复选框和文本框,但我没有运气,因为似乎什么都没有发生

private void clearSettingsBtn_Click(object sender, EventArgs e)
{
    foreach (Control c in splitContainer1.Panel1.Controls)
    {
        if (c is CheckBox)
        {
            ((CheckBox)c).Checked = false;
        }
        else if (c is TextBox)
        {
            ((TextBox)c).Clear();
        }
    }
}
我错过什么了吗?

试试这个

foreach (Control c in Panel1.Controls)
            {
                if (c is CheckBox)
                {
                    ((CheckBox)c).Checked = false;
                }
                else if (c is TextBox)
                {
                    ((TextBox)c).Text="";
                }
            }

事实上,您的代码还不错,应该存在另一个问题,比如错误的面板,或者更可能的是面板中会有另一个容器,比如GroupBox,在这种情况下,您应该遍历另一个容器

如果面板中有一个容器,则简单代码如下:

            foreach (Control control in splitContainer1.Panel2.Controls)
        {
            if (control is GroupBox)
            {
                foreach (Control child in (control as GroupBox).Controls)
                {
                    if (child is CheckBox)
                    {
                        ((CheckBox)control).Checked = false;
                    }
                    else if (child is TextBox)
                    {
                        (control as TextBox).Clear();
                    }
                }
            }
        }

但是如果您想编写更通用的代码,您应该检查每个容器,即GroupBox、Panel等。

您确定应该清除的控件放在splitContainer1的Panel1中吗?当然,我最初让代码清除整个表单中的复选框。考虑到我所有的复选框和文本框都在GroupBox中,我认为这很可能是问题所在。您不会碰巧知道任何迭代容器的示例吧?感谢您提供的示例代码,这对了解它的工作原理非常有用。运行代码时,会在将复选框更改为false并清除文本框的位置引发错误,有什么想法吗?*无法将类型为“System.Windows.Forms.GroupBox”的对象强制转换为类型为“System.Windows.Forms.checkbox”的对象,这不应该发生,因为只有当控件实际上是复选框时才会发生强制转换为复选框的操作。如果您仍然有问题,请分享您的代码以便进一步调查。语句->没有TextBoxc.Clear等功能;如果有错误,请使用“清除”方法清除文本框。