如何在VB.NET中找到TypeOf VB6控件

时间:2010-12-14 14:33:52

标签: vb.net com-interop vb6-migration

我正在编写一个.NET DLL来迭代通过参数传递的VB6表单中的所有控件。

到目前为止,似乎工作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 个答案:

答案 0 :(得分:1)

你是否正在比较两种不同的“标签”类型对象。

您尚未在IF TYPEOF行中限定LABEL类型,因此您可以将VB6标签与.net标签进行比较,它们将不相同。

您可以使用TYPENAME,但这可能不是您所需要的。我确保你真的要比较你认为比较的类型。

答案 1 :(得分:0)

您是否尝试过使用TypeName函数?它是否返回对TypeName(ctl)有用的东西?