0

私は自分のアプリケーションに C# と WinForms を使用して VS 2012 で作業しています。テキスト ボックス、コンボボックス、日時ピッカーなど、データを入力するすべての方法をクリアするためにどのような種類のルーチンを使用する必要があるのか​​知りたいです。私はグーグルでいくつかの「答え」を見つけましたが、どれもうまくいかないようで、実際に役立つと証明されていません.

[編集]:

私は調査を続け、実際に便利な方法を見つけました。必要なものを取得するには、いくつかのifを追加する必要がありました。

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 から派生したクラスを作成し、必要なものをすべてそろえ、フォームにドッキングします。「更新」する必要がある場合は、その Panel をその Panel の新しいインスタンスに置き換えるだけです。

于 2013-02-18T19:42:12.587 に答える
1

フォームのすべてのコントロールをループして、コントロールの種類に応じてクリアすることができます

于 2013-02-18T19:36:32.687 に答える
1

すべてクリアできますがTextboxesComboboxesDateTimePicker

をクリアするには、次の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 に答える