2016-01-12 80 views
2

默認情況下,我已將所有TextBoxs.readOnly = true;設置爲表單。 但是當單擊Edit Button時。 我想讓它所有的TextBoxs.readOnly = false;在WinForm上點擊按鈕後設置多個文本框可編輯

我試過了;

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; 
... 
+0

通過這種方法,你可以設置直接放置在你的形式只是'TextBoxes'不是那些內像「GroupBox」或「Panel」這樣的另一個容器。你需要一個遞歸的方法來達到這個目的:http://stackoverflow.com/a/34676012/2946329 –

+0

所有的'TextBoxes'都在一個'GroupBox'裏面 – AndroidAL

+0

@ user2946329是對的,但我更喜歡[this ](http://stackoverflow.com/a/3426721/1997232)遞歸方法或僅保存專用數組中的控件引用。如果控件位於同一個容器內,那麼用該容器實例替換'this'(在你的情況下是'GroupBox')。 – Sinatr

回答

3

用這種方法你可以設置只TextBoxesReadOnly被直接放置在您的形式而不是那些像GroupBoxPanel另一個容器內。如果您有多個容器(example1,example2),則您需要使用recursive方法。但是,由於所有的TextBoxes都在裏面一個GroupBox然後簡單地替換thisGroupBoxName這樣的:

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