■No48535 (うれ さん) に返信
> If TypeOf Ctrl Is TextBox Then
> だと派生したコントロールはFalseになります。
ステップ実行などを行って変数Ctrlの中身がTextBoxA〜TextBoxZのインスタンスだった場合でも、
If文の条件が成立しないということですか?
ソースコードはNo48477 のコードなんですよね??
そんなはずはないのですけどね・・・昨日の実験コードは以下のコードの抜粋&改変版で、
「If TypeOf Ctrl Is TextBox Then」のパターンについても検証済みです。
--
◇実験コード
' VB8.0/VB9.0のコンパイラで検証
'コンパイル方法:vbc /out:test.exe test.vb
Imports System
Class O
End Class
Class A
Inherits O
End Class
Class B
Inherits A
End Class
Module X
Sub Main()
Dim 変数 As O
変数 = New A()
If 変数.GetType() Is GetType(A) Then
Console.WriteLine("1:表示される")
End If
If TypeOf 変数 Is A Then
Console.WriteLine("2:表示される")
End If
変数 = New B()
If 変数.GetType() Is GetType(A) Then
Console.WriteLine("3:表示されない")
End If
If TypeOf 変数 Is A Then
Console.WriteLine("4:表示される")
End If
End Sub
End Module
◇実行結果
1:表示される
2:表示される
4:表示される
--
O型の変数にAクラスを継承したBクラスのインスタンスが設定されている場合に
A型かどうかをチェックして、A型だと判定されているので「4:表示される」と表示されています。