- ベストアンサー
VB.NETのパネルの使い方
VB.NETでWEBアプリケーションを作るのですが、Panelコントロールにテキストボックスやコンボボックスを配置し、メソッド一回でそのパネルの上に乗っている各コントロールをクリアしたいのです。こういう使い方ってできるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1. For Each ループで、パネル内部のコントロールを列挙 2. 列挙されたコントロールそれぞれの TypeOf を見る Select Case 文を記述 3. 各 Case の中で、適切なクリアメソッドを記述 基本的には、こういう流れで ok です。 が、パネルの中にパネルを入れ子している場合は、再帰的に見ていくように記述してやる必要がありますが… ※社内フレームワーク/共通関数にするなら、特に。
その他の回答 (2)
- popesyu
- ベストアンサー率36% (1782/4883)
コントロールにはTextBox以外もあるんですよね? だったら × For Each a As TextBox In Panel1.Controls ○ For Each a As Control In Panel1.Controls になると思いますが。 手元に.netの環境がないので確認はVBAでやってますが、これで動作しました。確か以前VB.Netでも似たようなコードを書いた記憶があるのですが、ちょっと違ったかもしれません。
- popesyu
- ベストアンサー率36% (1782/4883)
パネルのControlsに対してFor Each~Nextでループかければいけるんじゃないかなと。 各コントロールのプロパティが全てtextとかで統一されているコントロールならメゾットは1回の使用?というか、一行分のコードになりますし。
補足
こんばんは。 For Each a As TextBox In Panel1.Controls a.Text = "" Next これでいきましたが、「指定したキャストは有効ではありません。」 のエラーになりました。 パネルの上のオブジェクトはコンボボックスもあるので、複雑になるのでしょうか?
補足
アドバイスありがとうございます。 For Each a As Control In Panel1.Controls Next でもControl のメソッドのなかに「TYPE OF」をさがしましたが ありませんでした。具体的にはどうするのでしょうか? 上記のコーディングがやはり間違っているのでしょうか?