「ブロック機能」のリニューアルについて

現在適用中のコード:(VB2008)
Dim objtextbox As Control
For Each objtextbox In Me.Controls
objtextbox.Text = ""
Next

問題:
1、VB6と違い、Captionプロパティがなくなったため、TextBox以外のTextプロパティも空になってしまうので、コントロールがTextBoxのときだけ処理したい。

2、上記のコードだと、フォーム上にあるグループボックスの中は適用されない。In Me.controles 一発ですべてのグループボックスの中のTextプロパティまで処理したい。

3、そんなのは無理という場合、すべてのコントロールをフォームがロードされた状態にしたい。(できれば、CloseしてShowするのは避けたい)

いろいろ試してみましたが、うまくコードがかけません。ご迷惑をおかけいたしますが、皆様の知恵をお貸しください。

教えて!goo グレード

A 回答 (4件)

[準備する関数]


'指定されたコントロールコレクション内のテキストボックスをクリアする
Private Sub ClearTextBox(cc As Control.ControlCollection)
  For Each ctl As Control In cc
    If TypeOf ctl Is TextBox Then
      CType(ctl, TextBox).Text = String.Empty
    Else If ctl.Controls.Count > 0 Then
      ClearTextBox(ctl.Controls)'再帰処理
    End If
  Next
End Sub


[使用例]
ClearTextBox(Me.Controls)


※テキスト書きなので、間違いがあるかもしれませんw
    • good
    • 1
この回答へのお礼

お返事ありがとうございました。

まさにやりたかったことができました。
再帰処理はおぼろげながら考えたのですが、どこをどうすればうまくできるのかまったくわからない状態でした。

このままのコードで十分活用できます。

お礼日時:2008/06/18 10:12

下記のコードを試してください



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim c As Control
For Each c In Me.Controls
If TypeOf c Is TextBox Then 'TEXTBOXか?
c.Text = ""
End If
If TypeOf c Is GroupBox Then 'GroupBoxの処理
Dim c2 As Control
For Each c2 In c.Controls
If TypeOf c2 Is TextBox Then
c2.Text = ""
End If
Next
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

お返事ありがとうございました。
教えていただいたコードだと、フォーム上に複数のグループボックスがあると、最初の1番目しか処理できませんでした。

いろいろと考えてみたところ、教えていただいたコードを改造することで処理できるようになりました。

お礼日時:2008/06/18 10:07

No1です



dim aaa(3) as string

ここ間違いです

public aaa(3) as TextBox
    • good
    • 1

dim aaa(3) as string



aaa(0) = TextBox1
aaa(1) = TextBox2
aaa(2) = TextBox3
aaa(3) = TextBox4

----上記処理をフォームの起動時に実行----
dim i as Integer

for i = 0 to 3
aaa(i).text = ""
next i

----クリアしたいところで上記を実行----

上記みたいにテキストボックスだけ配列化すればできます
もっとスマートな方法があるかもしれませんけど
    • good
    • 0
この回答へのお礼

お返事ありがとうございました。
配列に格納することも考えたのですが、TextBoxの数が多くなると面倒ですのでfor each で処理する方法を考えました。

お礼日時:2008/06/18 10:05

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング