私はあなたの状況をWindows Formsアプリケーション(.NET 4)で試してみましたが、以下のように動作しました。 GetType(T1) Is GetType(T2)
を使用してのあなたの方法が機能しない理由私はよく分からないが、あなたの代わりにこれを使用することができます(これは、継承を考慮していないように多分それは、異なる意味を持っている):
Sub Show1()
For Each ctrl As Control In Controls
If TypeOf ctrl Is UserControl Then
ctrl.Hide()
End If
Next
UserControl11.Show()
End Sub
更新:
MSDNを調べて、コードが機能しない理由を確認しました。まず、TypeOf .. Is
演算子は、オブジェクトの型が他の型と互換性があるかどうかを調べるために使用される演算子です。ここで彼らは(リンク:TypeOf keyword)でのMSDNの記事は何だと言う:
TypeOf関数キーワードは、オブジェクトが由来する、またはそのようなインタフェースなどの特定のタイプを実装しているかどうかをテストする比較句を紹介します。
ただし、Isキーワードを使用しています(オブジェクトが特定の種類のものかどうかを確認するためにはC#とは非常に異なります)。 "Is"キーワードは、2つの参照が同じオブジェクトを参照しているかどうかをチェックするために使用されます。
[Is] 2つのオブジェクト参照変数を比較しています(リンク:Is keyword)。
だから私は正しく、あなたの意図とは異なるセマンティクスの演算子を使用しています。私はめったにVB .NETコードを書くことはほとんどありません。いい質問。
出典
2012-02-08 15:07:25
Mzn
あなたは何をしたいですか? –
タイトルに「Visual Basic.NET - 」などのプレフィックスを付けないでください。それがタグのためのものです。 –
ありがとう、私はしません! – Devfly