【问题标题】:Set multiple TextBoxes editable after button click on WinForm在单击 WinForm 按钮后设置多个可编辑的文本框
【发布时间】: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,而不是设置在另一个容器中的GroupBoxPanel。为此,您需要一个递归方法,请参见此处:stackoverflow.com/a/34676012/2946329
  • 所有TextBoxes都在GroupBox
  • @user2946329 是对的,但我更喜欢this 递归方法或简单地将控件引用保存在专用数组中。如果控件位于同一容器内,则将 this 替换为该容器实例(在您的情况下为 GroupBox)。

标签: c# winforms


【解决方案1】:

通过这种方法,您可以只设置直接放置在表单中的TextBoxesReadOnly,而不是设置在另一个容器(如GroupBoxPanel)内的ReadOnly。如果您有多个容器(example1example2),则需要一个 recursive 方法来实现此目的。但是由于您的所有TextBoxes 都在一个GroupBox 中,因此只需将this 替换为您的GroupBoxName,如下所示:

foreach (var textBox in groupBox1.Controls.OfType<TextBox>())
    textBox.ReadOnly = false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2020-07-22
    相关资源
    最近更新 更多