Wie lösche ich alle Textfelder, Comboboxes, und DateTimePickers auf einem Windows forms in C#?

Ich arbeite in VS 2012 mit C# und WinForms für meine Anwendung, und ich bin neugierig, welche Art von routine, die ich verwenden soll, deaktivieren Sie alle Methoden der Eingabe von Daten, die ich habe, enthält Textfelder, comboboxes, und date time pickers. Ich habe Gegoogelt und fand ein paar 'Antworten', aber keiner scheint zu arbeiten oder tatsächlich als hilfreich erweisen.

[EDIT]:

Hielt ich zu recherchieren und fand tatsächlich eine hilfreiche Methode, die ich nur hatte, um einige ifs zu bekommen, was ich wollte:

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();
                }
            }
        }
    }
  • Sie sind auf der Suche für einen Mechanismus, der magically leert alle Textboxen etc. auf Ihrem Formular?
  • Ja, natürlich, ich war auf der Suche nach Magie... Nicht ein Beispiel für eine Schleife hinzufügen, um meinen code. Ich wollte Magie.
  • Nicht gut genug. Sie haben zu prüfen, alle Kinder als auch Kinder. Siehe meine Antwort.
  • Auch scheint mir zu arbeiten.
  • Das ist, weil Sie nicht über verschachtelte Steuerelemente. Was, wenn Sie irgendwann entscheiden, sagen, fügen Sie ein Panel mit einer Textbox drauf??? Dann wird es scheitern.
  • Ich habe bereits Textfelder innerhalb von Platten und es funktioniert. Deshalb lasse ich es so wie es ist.
  • Interessant. Ich Frage mich, warum es funktioniert. (Randbemerkung: herzlich Willkommen SO. Wenn Sie reagieren auf jemandes Antwort - sind, bekommen Sie eine Benachrichtigung. Jedoch, als Reaktion auf den Kommentar von jemandem - Sie beginnen Ihren Kommentar mit "@theirName" für Sie um eine Benachrichtigung.)
  • Nur eine Vermutung - Wenn Sie klicken Sie auf "Document outline" (durch zugegriffen werden Kann View -> Other Windows) - sind die Textfelder, die wirklich auf der Platte, oder sind Sie auf der gleichen Ebene wie der Bereich, und sind eigentlich auch direkt auf die Form (Und nur in einer position in das panel-Bereich)?
  • Danke! Ich würde nicht gewusst haben, dass sonst, und ich bin nicht sicher, warum es funktioniert, aber in der Programmierung, wenn es funktioniert, habe ich nicht in Frage stellen. haha Auch, auf die sich das Dokument Umriss, es scheint, Sie sind in meinem Platten.

InformationsquelleAutor Claire | 2013-02-18
Schreibe einen Kommentar