|
■No65192 (LOC さん) に返信
> 下記コードの xxxxx を動的に指定できるかをお聞きしたいと思っておりました。
> 指定できるのであればどのような引数を持たせたらよいのでしょうか。
>
> For Each d as Form InApplication.OpenForms
> If (TypeOf(d) Is xxxxx) Then
> '〜フォーム起動済み〜
> End If
> Next
TypeOf a is b
は
aがbクラスであってもbクラスの派生クラスであっても当てはまるので
適切な判断にはなりません
a.GetType() is b.GetType()
とするとaのインスタンスとbのインスタンスの型(クラス)が一致するときのみTrueとなります。
もしインスタンス作成前にチェックするなら型を渡してチェックし
型情報からコンストラクタを呼ぶ処理になるかと思います。
Dim TpForm2 = GetType(Form2)
Dim exists = False
For Each frm As Form In Application.OpenForms
If frm.GetType Is TpForm2 Then
exists = True
frm.BringToFront()
End If
Next
If Not exists Then
Dim frm as Form = DirectCast(TpForm2.GetConstructor(Type.EmptyTypes).Invoke(Nothing), Form)
frm.Show()
End If
|