• ベストアンサー

VB.NETのパネルの使い方

VB.NETでWEBアプリケーションを作るのですが、Panelコントロールにテキストボックスやコンボボックスを配置し、メソッド一回でそのパネルの上に乗っている各コントロールをクリアしたいのです。こういう使い方ってできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#221739
noname#221739
回答No.3

1. For Each ループで、パネル内部のコントロールを列挙 2. 列挙されたコントロールそれぞれの TypeOf を見る Select Case 文を記述 3. 各 Case の中で、適切なクリアメソッドを記述 基本的には、こういう流れで ok です。 が、パネルの中にパネルを入れ子している場合は、再帰的に見ていくように記述してやる必要がありますが… ※社内フレームワーク/共通関数にするなら、特に。

noname#246722
質問者

補足

アドバイスありがとうございます。 For Each a As Control In Panel1.Controls Next でもControl のメソッドのなかに「TYPE OF」をさがしましたが ありませんでした。具体的にはどうするのでしょうか? 上記のコーディングがやはり間違っているのでしょうか?

その他の回答 (2)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

コントロールには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)
回答No.1

パネルのControlsに対してFor Each~Nextでループかければいけるんじゃないかなと。 各コントロールのプロパティが全てtextとかで統一されているコントロールならメゾットは1回の使用?というか、一行分のコードになりますし。

noname#246722
質問者

補足

こんばんは。 For Each a As TextBox In Panel1.Controls a.Text = "" Next これでいきましたが、「指定したキャストは有効ではありません。」 のエラーになりました。 パネルの上のオブジェクトはコンボボックスもあるので、複雑になるのでしょうか?