创建一个函数以清除windows窗体(C#)
我正在尝试使用C#函数清除windows窗体 我知道清除单个控件的方法,例如创建一个函数以清除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) {
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中的新手。