Как найти TypeOf элемента управления VB6 в VB.NET - PullRequest
0 голосов
/ 14 декабря 2010

Я пишу .NET DLL для перебора всех элементов управления в форме VB6, переданной byref.

До сих пор, похоже, работает код VB.NET:

Public Sub AddFormRefLegacy(ByRef strAppName As String, ByRef objForm As Object)

        'update the forms caption
        objForm.Caption = FindValue(strAppName, objForm.Name, "", "0", objForm.Caption)

        'iterate through all the controls on the form          
        For Each ctl As Object In objForm.Controls
           if TypeOf ctl is Label then
             'this doesn't pick up any labels
           end if
        Next
    End Sub

Вызываетсяиз этого кода VB6:

Dim libDD As New Lib.clsDataDictionary
libDD.AddFormRefLegacy "nnne", Me

, но оператор TypeOf не работает.Есть ли другой способ найти тип управления?

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Может быть, вы сравниваете два разных объекта типа "Label".

Вы не указали тип LABEL в строке IF TYPEOF, поэтому вы можете сравнивать метку VB6 с меткой .net, и они не будут одинаковыми.

Вы можете использовать TYPENAME, но это может быть не совсем то, что вам нужно. Я бы удостоверился, что вы действительно сравниваете типы, которые, по вашему мнению, вы сравниваете.

0 голосов
/ 14 декабря 2010

Вы пробовали использовать функцию TypeName? Возвращает ли что-нибудь полезное для TypeName (ctl)?

...