如何在C#中清除WinForm上的所有文本框、组合框和DateTimePickers
本文关键字:文本 组合 DateTimePickers 清除 WinForm | 更新日期: 2023-09-27 17:59:50
我在VS 2012中使用C#和WinForms作为我的应用程序,我很好奇我应该使用什么样的例程来清除所有输入数据的方法,包括文本框、组合框和日期-时间选择器。我在谷歌上搜索了一些"答案",但似乎没有一个有效,也没有一个真正有用。
[编辑]:
我一直在研究,实际上找到了一个有用的方法,我只需要添加一些如果就可以得到我想要的:
private void ResetFields()
{
foreach (Control ctrl in this.Controls)
{
if (ctrl is TextBox)
{
TextBox tb = (TextBox)ctrl;
if (tb != null)
{
tb.Text = string.Empty;
}
}
else if (ctrl is ComboBox)
{
ComboBox dd = (ComboBox)ctrl;
if (dd != null)
{
dd.Text = string.Empty;
dd.SelectedIndex = -1;
}
}
else if (ctrl is DateTimePicker)
{
DateTimePicker dtp = (DateTimePicker)ctrl;
if (dtp != null)
{
dtp.Text = DateTime.Today.ToShortDateString();
}
}
}
}
类似的东西:
void ClearThem(Control ctrl)
{
ctrl.Text = "";
foreach (Control childCtrl in ctrl.Controls) ClearThem(childCtrl);
}
然后:
ClearThem(this);
另一个选项:创建一个从Panel派生的类,上面有你需要的所有内容,并将其停靠在窗体中。当你需要"刷新"时,只需用该Panel的新实例替换该Panel。
您可以在表单的所有控件中循环并根据控件类型清除
我们可以清除所有Textboxes
、Comboboxes
,但不能清除DateTimePicker
如果要清除DateTimePicker
,则必须设置以下属性:Format = Custom
、CustomFormat = " "
以及您想要在DateTimePicker
中选择日期的时间
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
dateTimePicker1.Format = DateTimePickerFormat.Short;
}
这可能是解决方案:
public static void ClearAll(Control control)
{
foreach (Control c in control.Controls)
{
var texbox = c as TextBox;
var comboBox = c as ComboBox;
var dateTimePicker = c as DateTimePicker;
if (texbox != null)
texbox.Clear();
if (comboBox != null)
comboBox.SelectedIndex = -1;
if (dateTimePicker != null)
{
dateTimePicker.Format = DateTimePickerFormat.Short;
dateTimePicker.CustomFormat = " ";
}
if (c.HasChildren)
ClearAll(c);
}
}
循环使用表单控件,将它们与类型匹配,并将其设置为"或null;