【发布时间】:2016-01-12 12:30:53
【问题描述】:
默认情况下,我已经在表单中设置了我所有的TextBoxs.readOnly = true;。
但是当点击Edit Button 时。
我想让它成为所有TextBoxs.readOnly = false;
我试过了;
private void btnEdit_Click(object sender, EventArgs e)
{
foreach (var textBox in this.Controls.OfType<TextBox>())
textBox.ReadOnly = false;
}
每个TextBox 都有一个唯一的名称。
下面是最简单的方法。但我不想那样做。
txtName.ReadOnly = false;
txtAddress.ReadOnly = false;
...
【问题讨论】:
-
通过这种方法,您可以只设置直接放在表单中的
TextBoxes,而不是设置在另一个容器中的GroupBox或Panel。为此,您需要一个递归方法,请参见此处:stackoverflow.com/a/34676012/2946329 -
所有
TextBoxes都在GroupBox中 -
@user2946329 是对的,但我更喜欢this 递归方法或简单地将控件引用保存在专用数组中。如果控件位于同一容器内,则将
this替换为该容器实例(在您的情况下为GroupBox)。