- PR -

コントロールのクリア

1
投稿者投稿内容
damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2003-05-06 13:42
VB.NETでWeb開発をしています。
Web上のテキストコントロールを下記の様にクリアしたいのですが
objControl.text = ""
この部分でエラーとなります。これを回避するにはどう修正したら
よいのでしょうか?
よろしくお願いします。

Public Sub ClearControl()

Dim objControl As Control

For Each objControl In Me.Controls
If objControl.GetType Is GetType(TextBox) Then
objControl.text = ""
End If
Next

End Sub
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-05-06 14:04
こんにちは。

Controlには、textというプロパティはないので、明示的にTextBoxへ型変換すると
よいのでは?
damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2003-05-12 15:58
下記の処理はWeb上のコントロールをクリアする処理です。
IF文の中に処理が移ってくれません。
どこが悪いのでしょうか?
よきアドバイスをお願いします。

Dim objControl As Control
Dim objtxt As TextBox

For Each objControl In Me.Controls
If objControl.GetType Is GetType(TextBox) Then
objtxt = CType(objControl, TextBox)
objtxt.Text = ""
End If
Next

引用:

Qooさんの書き込み (2003-05-06 14:04) より:
こんにちは。

Controlには、textというプロパティはないので、明示的にTextBoxへ型変換すると
よいのでは?


のっぴー
会議室デビュー日: 2003/04/10
投稿数: 5
投稿日時: 2003-05-12 18:25
Webではやってませんが、VB.NETではこんな感じでやってます。
If TypeOf objtxt Is Label Then
objtxt.Text = ""
End If
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-05-12 20:46
おそらくコントロールのツリーが見えていない為ではないでしょうか?

ページのControlsプロパティは以下のようになっています

Page - Controls - HtmlFrom + TextBox
              + :
              + :
              + :
              + :

※TextBoxはControlsのFrom要素の子の要素となります
(ユーザコントロールなどを使用しない単純な場合)

参考までにクリアする例を挙げると以下のようになります。

コード:

Public Sub ClearControl()
Call ClearTextBox(Me.Controls)
End Sub

Public Sub ClearTextBox(ByVal controls As ControlCollection)
Dim objControl As Control
For Each objControl In controls
If TypeOf objControl Is TextBox Then
Dim objtext As TextBox = CType(objControl, TextBox)
objtext.Text = String.Empty
End If
If objControl.HasControls() Then
Call ClearTextBox(objControl.Controls)
End If
Next
End Sub




[ メッセージ編集済み 編集者: FOX 編集日時 2003-05-12 21:14 ]
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-05-12 21:35
Controlsのツリーがどうなっているかを簡単に確認するには
ASP.NETのトレース情報を参考にするとよいです。

以下はmsdnのヘルプになります

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconenablingapplication-leveltracing.asp

以上参考になれば幸いです。

damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2003-05-13 16:33
ご回答いただいた皆様、ありがとうございました。
この方法で解決できました。
本当に感謝です。

引用:

FOXさんの書き込み (2003-05-12 20:46) より:
おそらくコントロールのツリーが見えていない為ではないでしょうか?

ページのControlsプロパティは以下のようになっています

Page - Controls - HtmlFrom + TextBox
              + :
              + :
              + :
              + :

※TextBoxはControlsのFrom要素の子の要素となります
(ユーザコントロールなどを使用しない単純な場合)

参考までにクリアする例を挙げると以下のようになります。

<!-- BBCode Start --><TABLE BORDER="0" ALIGN="CENTER" WIDTH="90%" CELLSPACING="0" CELLPADDING="0"><TR><TD WIDTH="5%" NOWRAP><FONT SIZE="-1">コード:</FONT></TD><TD WIDTH="95%"><HR SIZE="1" WIDTH="100%"></TD></TR><TR><TD COLSPAN="2"><PRE>
Public Sub ClearControl()
Call ClearTextBox(Me.Controls)
End Sub

Public Sub ClearTextBox(ByVal controls As ControlCollection)
Dim objControl As Control
For Each objControl In controls
If TypeOf objControl Is TextBox Then
Dim objtext As TextBox = CType(objControl, TextBox)
objtext.Text = String.Empty
End If
If objControl.HasControls() Then
Call ClearTextBox(objControl.Controls)
End If
Next
End Sub
</PRE><HR SIZE="1" WIDTH="100%"></TD></TR></TABLE><!-- BBCode End -->


[ メッセージ編集済み 編集者: FOX 編集日時 2003-05-12 21:14 ]

1

スキルアップ/キャリアアップ(JOB@IT)