Alle TextBoxen auf einer Form auf enabled=false setzen

Manchmal hat man es, das man sämtliche TextBoxen auf einer Form enablen oder disablen muss.
Da dies manuelle per hand zu programmieren einfach nur nervig ist, kann man es besser programmatisch in einer Schleife lösen 🙂

Mit folgendem Code ist dies recht einfach umsetzbar:

1
2
3
4
5
6
7
8
foreach (Control c in this.Controls)
{
    if (c is TextBox)
    {
        c.Text = "disabled";
        c.Enabled = false;
    }
}

Hierbei sollte beachtet werden das man NICHT this.Controls verwendet, da dies zu ungewünschten Ergebnissen z.b. in einem Click Event von einem Button führen kann, da der Button selten Eigene Controls besitzt.

zusammengefasst in einem Formular sieht das dann so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace controltest
{
    public partial class Form1 : Form
    {
        private Form1 frm1;
 
        public Form1()
        {
            InitializeComponent();
            frm1 = this;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (Control c in frm1.Controls)
            {
                if (c is TextBox)
                {
                    c.Text = "disabled";
                    c.Enabled = false;
                }
            }
        }
    }
}

Tolle Sache das – mal wieder 😀

2 Responses to Alle TextBoxen auf einer Form auf enabled=false setzen

  1.  

    Das klappt nur in der Control-Collection auf erster Ebene!

    Solltest du z.B. ein Panel-Objekt im Form haben in dem weitere Controls sind (z.B. TextBox´s), so werden diese NICHT disabled!
    Tip: Rekursion 🙂

  2.  

    Mit LinQ wäre es auch möglich und sogar relativ schick 🙂

    frm1.Controls.OfType().Where(x => x is TextBox);

leave your comment

*

Unterstütze den Frickelblog!