Alle Controls einer Form auf Readonly setzen – Winforms – C#

Ein einzelnes Control auf Readonly zu setzen ist einfach, aber was ist wenn man alle Controls einer Winforms Anwendung auf Readonly setzen möchte. Und ich meine wirklich auf Readonly nicht auf Enabled indem man ein Panel als Container der Controls verwendet und dann die Panel Eigenschaft Enabled auf false setzt.

Zu diesem Zweck habe ich mir eine kleine Routine erstellt, welche Rekursiv alle Controls (die ich möchte) einer ControlCollection auf Readonly setzt.

Hier nun die Methode setReadOnly:

private void setReadOnly(Control.ControlCollection Controls)
{
    foreach (Control control in Controls)
    {
        if (control is TextBox)
        {
            ((TextBox)control).ReadOnly = true;

        }
        if (control is ComboBox)
        {
            ((ComboBox)control).Enabled = false;
        }
        if (control is DateTimePicker)
        {
            ((DateTimePicker)control).Enabled = false;
        }

        if (control.Controls.Count > 0)
        {
            setReadOnly(control.Controls);
        }
    }

}

Ein Gedanke zu „Alle Controls einer Form auf Readonly setzen – Winforms – C#“

  1. Hi,

    super Idee, die ich dankend aufgenommen habe, und erweitert um Numeric Up/Downs. Das war gar nicht so einfach, wie erst gedacht, weil auch bei ReadOnly die Increment/Decrement-Buttons funktionieren (und auch die Bedienung über die Cursor-Tasten). Ich hab mir mit dem Trick beholfen, den Inkrement-Wert auf Null zu setzen:

    if (control is NumericUpDown)
    {
    ((NumericUpDown)control).ReadOnly = true;
    ((NumericUpDown)control).Increment = 0;
    }

    Grüße,

    Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.