
現在適用中のコード:(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するのは避けたい)
いろいろ試してみましたが、うまくコードがかけません。ご迷惑をおかけいたしますが、皆様の知恵をお貸しください。
No.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
お返事ありがとうございました。
まさにやりたかったことができました。
再帰処理はおぼろげながら考えたのですが、どこをどうすればうまくできるのかまったくわからない状態でした。
このままのコードで十分活用できます。
No.3
- 回答日時:
下記のコードを試してください
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
お返事ありがとうございました。
教えていただいたコードだと、フォーム上に複数のグループボックスがあると、最初の1番目しか処理できませんでした。
いろいろと考えてみたところ、教えていただいたコードを改造することで処理できるようになりました。
No.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
----クリアしたいところで上記を実行----
上記みたいにテキストボックスだけ配列化すればできます
もっとスマートな方法があるかもしれませんけど
お返事ありがとうございました。
配列に格納することも考えたのですが、TextBoxの数が多くなると面倒ですのでfor each で処理する方法を考えました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
-
VB2005 TextBoxに何も入力しない場合のエラー
Visual Basic(VBA)
-
フォームの再読み込み
Visual Basic(VBA)
-
4
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
5
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
6
C#のループでtextboxに値を入れる方法
C言語・C++・C#
-
7
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
-
8
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
9
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
10
CloseとDisposeの違い
Visual Basic(VBA)
-
11
VB初心者。小数点以下の表示でつまづいています(涙
Visual Basic(VBA)
-
12
TextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法
Visual Basic(VBA)
-
13
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
14
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
15
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
16
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
17
テキストボックスに入力された値の判定
Visual Basic(VBA)
-
18
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
19
TextBoxに特定の文字のみ入力を許す
Visual Basic(VBA)
-
20
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【Excel】特定の文字を含むセル...
-
5
VBAでループ内で使う変数名を可...
-
6
DoEventsがやはり分からない
-
7
findは動くがfindnextがマクロ...
-
8
switch の範囲指定
-
9
UMLでの例外処理
-
10
Do~Loopした回数をカウントしたい
-
11
FFTの結果ついて
-
12
リョウ・・・量?料?
-
13
VB6 DoEventsの代わりは?
-
14
【Find関数】あるのに見つから...
-
15
EXCEL VBA マクロ 実行する度に...
-
16
vbaでieのプロキシ設定を変更す...
-
17
ボタンクリックイベント 重複...
-
18
音声マークを一括非表示にしたい。
-
19
Select Case文でこのようなこと...
-
20
一定の時間が経過したら、処理...
おすすめ情報
公式facebook
公式twitter