创建一个函数以清除windows窗体(C#)

创建一个函数以清除windows窗体(C#),c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我正在尝试使用C#函数清除windows窗体 我知道清除单个控件的方法,例如 username.Clear(); password.Clear(); 但是,它是一个大型表单,clear函数看起来有点笨拙 我在网上找到了一个类似这样的代码 private void ClearFields(System.Windows.Forms.Control.ControlCollection collection) { foreach (Control c in collection) {

我正在尝试使用C#函数清除windows窗体

我知道清除单个控件的方法,例如

username.Clear();
password.Clear();
但是,它是一个大型表单,clear函数看起来有点笨拙

我在网上找到了一个类似这样的代码

private void ClearFields(System.Windows.Forms.Control.ControlCollection collection)
{
    foreach (Control c in collection)
    {
        if (c.HasChildren)
            ClearFields(c.Controls);
        if (c is TextBox)
        {
            if (!string.IsNullOrEmpty(c.Text))
                c.Text = "";
        }
    }
}

但是,对于此代码,密码字段本身不会被清除。我正在独自清除“文本框”控件。即使这两个控件基本上都是“TextBox”控件,我也必须为清除密码字段指定任何其他控件名吗?

您应该获得
TextBox
控件(或者
TextBoxBase
如果您还想清除
MaskedTextBox
RichTextBox
并调用它们的
clear()
方法:

private void ClearTextBoxes(ControlCollection controls)
{
    foreach (Control c in collection)
    {
        if (c.HasChildren)
        {
            ClearTextBoxes(c.Controls);
            continue;
        }

        TextBox tb = c as TextBox; // or TextBoxBase
        if (tb != null)
            tb.Clear();
    }
}

正如@Adriano已经指出的,“密码”控件是WinForms中的简单文本框

这段代码可以吗?控件没有文本属性。没有“密码”控件,只有一个TextBox.PasswordChar属性设置为非空字符。是的,我理解。但该代码对所有其他字段都适用。@Adriano确实如此。我的错误很抱歉,但是,我的函数似乎指向了我之前编写的手动清除函数。我的问题仍然存在,因为此方法仍然没有清除密码消息框。它只会很好地清除除密码外的所有其他消息框。@MklRjv您在说什么消息框?你的自定义函数是什么?我已经编辑了我的问题。请查找更新的代码。我用来清除表单的函数只是手动清除所有MessageBox。比如username.Clear()和password.Clear()等等。@MklRjv如果
TextBoxBase
对你有效,那么正如我在回答中所说,你正在使用
MaskedTextBox
RichTextBox
作为“密码”控件是的,你是对的。谢谢,很抱歉给你添麻烦。你看到的C#world中的新手。