C#.NET フォームコントロールのプロパティをまとめて変更する

.NETのフォームアプリで例えば,

textBox1.Text = "";<br>textBox2.Text = "";<br>textBox3.Text = "";<br>textBox4.Text = "";<br>textBox5.Text = "";<br>

という部分があったとします。(ただし親フォームは同一)

わざわざと思いますが,こういったシーンが出てきたときに一々書いたほうが分かりやすいかもしれませんが,1つだけ見落としていたりということがありがちです。

今回はこのようなコードの短縮(?)コードをメモします。

foreach (Control control in tableLayoutPanel1.Controls)<br>{<br>    if (control.GetType() == typeof(TextBox))<br>    {<br>      control.Enabled = true;<br>    }<br>}<br>

というコードになります。

今回の場合は「tableLayoutPanel1」に属する子コントロールの中から,「TextBox」の「Enabledプロパティ」をtrueにする場合です。

この時に注意する点があります。

  • if文で条件分岐しないと,同じ親コントロールに属するButtonとかLabelとかも変更される
  • 親フォームというのは,子フォームから見て1つ上のフォームのこと
1つ気になったのは,同じ.NETなのにVBでは
For Each Control control In tableLayoutPanel1.Controls Then<br>    If control.GetType() Is GetType(TextBox) Then <br>      control.Enabled = true;<br>    End If<br>Next<br>

と書くのですが(手入力なので合ってるだろうか・・・),C#だとGetTypeメソッドが使えなくて「あれ?」ってなりました。
VBとC#の根本的な違いなんですかね???
僕は詳しくないのでわからないのですが。。。

以前にVBで書いたことがあったので,その辺でちょっと突っかかりました。

さらに詳しくは,このページが参考になります。
「Visual Basic 中学校」
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard20.htm


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください