- - PR -
複数コントロールのループ処理
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-18 15:59
いつもお世話になります。
環境: Visual Studio.NET 2003 Windows Server2000 ページ(Form)に、コントロールが複数(例えば100個)あるとき これらを一度に(数行のステップで)無効(.Visible=false)、有効(.Visible=true) にできないでしょうか。(ループ処理で何とかならないでしょうか) 現状こんな感じなっております。 Me.CheckBox1.Visible = False Me.CheckBox2.Visible = False Me.CheckBox3.Visible = False ・ ・ ・ Me.CheckBox30.Visible = False 何か良い案がありましたらご教授願えますよう どうぞよろしくお願い致します。 以上 | ||||
|
投稿日時: 2006-01-18 16:18
FindControlを使用して以下のような感じではどうでしょう?
検証していないので動作しなかったらスイマセン・・・ [ メッセージ編集済み 編集者: Katze 編集日時 2006-01-18 16:22 ] | ||||
|
投稿日時: 2006-01-18 16:19
さかもとと申します。
以前同じような件で調べたことがあります。 正しいかどうかは別として・・・(笑) 私は以下のように利用しています。 グループボックスに含まれるコントロールがテキストボックスだった場合にテキストボックスの中身をリセットするようにしています。これをvisible=falseなどにすればよいかと 思いますが使えますでしょうか? (汚いソースをそのまま貼り付けますので細かいところは無視してください) '------------------------------ private gpb As GroupBox private i As Integer = 0 private cmb As ComboBox Public Property Setgpb() As GroupBox Get Return Me.gpb End Get Set(ByVal Value As GroupBox) Me.gpb = Value 'ここから↓を変えればできるかも Do While i < gpb.Controls.Count If gpb.Controls(i).GetType().ToString = "System.Windows.Forms.TextBox" Then gpb.Controls(i).ResetText() End If i = i + 1 Loop i = 0 'ここまで End Set End Property '------------------------------ | ||||
|
投稿日時: 2006-01-18 16:24
どのような項目が、どのように配置しているかにも因ります。 関連がある項目ならば、コードから動的にコントロールをロードして、 その際に、コレクションなどに参照を保持しておきます。 あとは、そのコレクションを回して値を設定します。 これが最も現実的ですが、生で配置してあるのであれば不可能です。 または、GroupBox などに関連するコントロールを所属させて、 親コンテナの Controls プロパティから For Each で列挙して値を設定します。 それをやるくらいならば、親コンテナ自体に設定した方が早いのですが、 見た目の問題もあるのでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-18 16:26
FindControl? Web アプリケーションの質問!? あ、Form (ページ) って書いてありますね... orz Web アプリケーションで項目 100 ってあり得るんでしょうか... 普通はユーザーコントロールにしますけど... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-18 16:44
C#ですが、こんな感じの関数作ったらどうでしょう?
private void ChangeViewControles(Control control,bool isVisible) { foreach(Control childControl in control.Controls) { childControl.Visible = isVisible; if(childControl.HasChildren) { ChangeViewControles(childControl,isVisible); } } } 呼ぶときは、 ChangeViewControles(this,true); VBだとthisじゃなくてMeなのかな?2番目の引数で表示非表示切り替えです。 | ||||
|
投稿日時: 2006-01-18 16:45
私は何の疑いもなくWeb アプリケーションだと思ってしまいました... orz 確かに考えてみるとWeb でチェックボックス100項目というのはあまりないかもしれませんので もしかするとWindows Formなのかも・・・ その場合は、先ほどのはスルーしてください [ メッセージ編集済み 編集者: Katze 編集日時 2006-01-18 16:49 ] | ||||
|
投稿日時: 2006-01-18 16:52
ん?Webアプリケーション?
早まったか・・・w |