VB2005をで開発している、初心者です
ネット書籍等でいろいろ調べましたが分かりません、宜しくお願いします。
画面にCheckBoxを30個配置し全部をオン/オフにするプログラムを作って
います、一つずつ羅列しプログラムを書けば解決できるのですが、数が増
えればプログラムも長くなりコードも見づらくなります、何か良い方法は
無いでしょうか?
-----------------------------------------------現状
chkOpen1.Checked = True
chkOpen2.Checked = True
chkOpen3.Checked = True
chkOpen4.Checked = True
......
-----------------------------------------------今後
Dim controlName As String
For i = 1 To 30
controlName = "chkOpen" & i
Me.Controls(controlName).Checked = True 'この部分でエラーになる
Next i
> Me.Controls(controlName).Checked
代わりに、Controls.Find メソッドを試してみてください。
(同名のコントロールも作れるため、結果は配列で返されます)
ただしこういう時は、毎回、コントロール名によって検索するのではなく、
あらかじめ最初(Load イベントなど)に、それら 30個のコントロールを
コレクションや配列などに保持しておいた方が便利ですよ。
エラー内容はどのような内容でしたか。
省略せずにk書いてみてください。
また,Option Strictはどう設定されていますか。
> Me.Controls(controlName).Checked = True 'この部分でエラーになる
Dim target As CheckBox = TryCast(Me.Controls(controlName), CheckBox)
If Not target Is Nothing Then target.Checked = True
と,ちゃんとCheckBoxに変換してやってはどうでしょうか。
早速の対応ありがとうございます。
驚きました、感謝です
また投稿したいと思います。