プロが教えるわが家の防犯対策術!

VB2010を使用しています。チェックボックスのon/offでテキストボックスの入力を制限しようとしています。

If Check1.Checked = True Then
For Each Cont As Control In Me.Groupko顧客数.Controls
If Cont.Name Like "Text*" Then

ここの記述ですが
        『Cont.ReadOnly = True』と書いても構文が違うのか認識しません??

End If
Next
Else
          逆のコードの予定
End If

大量のテキストボックスがあるので一つ一つコードを書くのは面倒なので

ご教授お願いします。

A 回答 (1件)

cont は Control 型なので TextBox 型にキャストしてやる必要がある。



CType(cont, TextBox).ReadOnly = True


チェックボックスの on/off でトグル動作させるのなら以下のようにすれば
ReadOnly = True と ReadOnly = False のコード ブロックを書かなくて済む。

CType(cont, TextBox).ReadOnly = CheckBox1.Checked


GroupBox 内の全てのテキストボックスが対象なら以下のようにすることも可能。
For Each の対象を GroupBox1 内の TextBox に絞ってループさせる。

For Each cont As TextBox In Me.GroupBox1.Controls.OfType(Of TextBox)()
  cont.ReadOnly = CheckBox1.Checked
Next
    • good
    • 0
この回答へのお礼

とても分かり易い回答、ありがとうございます。

なるほど、型が違ったんですか、独学でコーディングしているので数多のネットからのコピペでやっているので応用力が中々つきません(苦笑)

これからも精進したいと思います。

お礼日時:2012/10/30 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!