遍历清空winform中的控件值

我的winform程序中需要对一个录入信息的窗体中Button编写清空窗体中Text、Combox、DateTimePicker的值,已备录入新信息。但是我在写遍历清空的时候始终无法清空内容。不知道问题在哪里。
Form中先有一个TableLayoutPanel容器,然后上面又布局了一个Panel1,这些控件就在该Panel1内。
然后按键在Panel1上的Panel2内。
现在这个遍历清空要怎么做呢?

img

您可以使用递归函数来遍历您的Panel1,然后清空其中所有的TextBox、ComboBox、和DateTimePicker控件。以下是示例代码:

private void ClearControls(Control control)
{
    foreach (Control c in control.Controls)
    {
        if (c is TextBox)
        {
            ((TextBox)c).Text = string.Empty;
        }
        else if (c is ComboBox)
        {
            ((ComboBox)c).SelectedIndex = -1;
        }
        else if (c is DateTimePicker)
        {
            ((DateTimePicker)c).Value = DateTime.Now;
        }
        else if (c.Controls.Count > 0)
        {
            ClearControls(c);
        }
    }
}

private void btnClear_Click(object sender, EventArgs e)
{
    ClearControls(panel1);
}

在上面的代码中,ClearControls函数使用foreach循环遍历panel1中的每个控件。如果控件是TextBox、ComboBox或DateTimePicker,它将使用相应的代码清空控件的值。如果控件还包含其他控件,则递归调用ClearControls函数以继续遍历下一级控件。在btnClear_Click事件处理程序中,我们将panel1作为参数传递给ClearControls函数以开始遍历和清空控件的值。

请注意,此代码假定您只需要清空TextBox、ComboBox和DateTimePicker控件。如果您需要清空其他类型的控件,您可以将代码添加到if语句块中。

回答不易,还请能够采纳!!!

时间控件不支持清空,它必须有个值。
你可以将当前时间赋值给它

缺少值

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
遍历清空Winform中的控件值通常可以使用递归遍历控件树的方法,对容器控件中的子控件进行遍历,通过判断控件类型并清空其值,从而达到清空窗体中所有输入控件的目的。下面是一个示例代码,可以根据需要进行修改:

private void ClearControls(Control control)
{
    foreach (Control c in control.Controls)
    {
        if (c is TextBox)
        {
            ((TextBox)c).Text = string.Empty;
        }
        else if (c is ComboBox)
        {
            ((ComboBox)c).SelectedIndex = -1; //或者将SelectedIndex设置为0,即第一项
        }
        else if (c is DateTimePicker)
        {
            ((DateTimePicker)c).Value = DateTime.Now;
        }
        else if (c.Controls.Count > 0)
        {
            ClearControls(c);
        }
    }
}

// 调用方法
ClearControls(panel1);

在该示例中,ClearControls方法对传入的Control进行遍历,对于各种类型的输入控件分别进行了清空操作。如果当前控件是容器控件,则递归调用ClearControls方法,继续进行遍历。最后调用ClearControls(panel1)即可清空panel1中所有子控件的值。
如果我的回答解决了您的问题,请采纳!