0

我在 VS 2012 中使用 C# 和 WinForms 为我的应用程序工作,我很好奇我应该使用什么样的例程来清除所有输入数据的方法,包括文本框、组合框和日期时间选择器。我用谷歌搜索并找到了一些“答案”,但似乎没有一个有效或实际上证明有帮助。

[编辑]:

我一直在研究,实际上发现了一个有用的方法,我只需要添加一些 ifs 就可以得到我想要的:

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();
                }
            }
        }
    }
4

4 回答 4

2

这样的东西:

void ClearThem(Control ctrl)
{
    ctrl.Text = "";
    foreach (Control childCtrl in ctrl.Controls) ClearThem(childCtrl);
}

进而:

ClearThem(this);

另一种选择: 创建一个派生自 Panel 的类,其中包含您需要的所有内容,并将其停靠在 Form 中。当您需要“刷新”时 - 只需将该面板替换为该面板的新实例即可。

于 2013-02-18T19:42:12.587 回答
1

您可以循环输入表单的所有控件并根据控件类型清除

于 2013-02-18T19:36:32.687 回答
1

我们可以清除所有TextboxesComboboxes但不是DateTimePicker

如果要清除,则DateTimePicker必须设置属性: Format = CustomCustomFormat = " "以及要在其中选择日期的时间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);
        }
    }
于 2013-02-18T19:41:08.007 回答
0

循环遍历表单控件,将它们与您的类型匹配并将其设置为 "" 或 null;

于 2013-02-18T19:36:16.347 回答