- 日時: 2009/12/26 22:29
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[コントロール共通][自アプリ関係][] * * キーワード:名前空間:System.Windows.Forms,HasChildren プロパティ, * ***********************************************************************************
元質問:Formの全てのコントロールのTextをクリアするには - びぎ 2007/08/24 No.6143 PanelにTextBoxを配置すると外側のFor Each oControl In Me.Controls ではクリアできないからです。 そこで、聞きたいのはPanelの中にPanelを配置しそのPanelにTextBoxを配置するいったことをするともう1つ下位をFor Each する必要があります。 もう1つPanelを配置すると、またその下位をFor Each してクリアします。 省略して書くと For Each oControl In Me.Controls For Each oControl2 In oControl.ControlS For Each oControl3 In oControl2.ControlS For Each oControl4 In oControl3.ControlS といった感じでしょうか。 実際、細かい画面になるとPanelが何階層になっているか見ていくのも大変です。
----------------------------------------------------------------------------------- Re: Formの全てのコントロールの.. - 花ちゃん 2007/08/25-00:34 No.6144 ----------------------------------------------------------------------------------- 下記のように再帰的に実行すればいいのでは。 (別途エラー処理をするようにして下さいね。) 又下記サンプルは、他に使っていた物を流用して投稿しておりますので、メソッド名等は 目的に合わせて変更して下さい。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click GetAllControls(Me) End Sub
Private Sub GetAllControls(ByVal control As Control) If control.HasChildren Then For Each childControl As Control In control.Controls GetAllControls(childControl) 'テキストボックスだけにアクセスしたい場合 ' If TypeOf childControl Is TextBox Then childControl.Text = "花ちゃん" ' End If Next childControl End If End Sub
------------------------------------------------------------------------------------- 全てのコントロールのフォント関係を一斉に変更する場合やバックカラーの設定等用途は色々 あるかと思います。 -------------------------------------------------------------------------------------- 上記の実行結果の画面(画像をクリックすると元のサイズで見られます。)
デザイン時 実行時
|