Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET互操作传递VB6表单byRef_C#_.net_Vb.net_Com Interop - Fatal编程技术网

C# .NET互操作传递VB6表单byRef

C# .NET互操作传递VB6表单byRef,c#,.net,vb.net,com-interop,C#,.net,Vb.net,Com Interop,我正在尝试开发一个.NET类,该类用各种新标题更新VB6窗体及其控件(它位于COM可见的程序集中) 我将VB6表单ByRef作为对象传递给.NET类,然后更新表单上的标题等,如下所示: Public Sub AddFormRefLegacy(ByRef objForm As Object) Try objForm.Caption = "some new caption" For Each ctl As Object In objForm.Control

我正在尝试开发一个.NET类,该类用各种新标题更新VB6窗体及其控件(它位于COM可见的程序集中)

我将VB6表单ByRef作为对象传递给.NET类,然后更新表单上的标题等,如下所示:

Public Sub AddFormRefLegacy(ByRef objForm As Object)
    Try

        objForm.Caption = "some new caption"

        For Each ctl As Object In objForm.Controls

            Select Case TypeName(ctl)
                Case "Label"
                    ctl.caption = "some new caption"
                Case "Frame"
                    ctl.caption = "some new caption"
                Case "CommandButton", "PushButton"
                    ctl.caption = "some new caption"

                'etc etc
这在85%的时间内都能正常工作,但有时会出现运行时错误80131500没有这样的接口(E_NOINTERFACE)

我不确定这到底是哪里抛出的错误,但有人能看到任何明显的错误吗

编辑

问题似乎发生在这一部分:

Case "ITabStrip" 'MS Common Controls 6
    For i = 0 To ctl.Tabs.Count - 1 ' this sometimes throws the error!
        ctl.Tabs(i + 1).Caption = FindValue(objForm.Name, ctl.Name, i, ctl.Tabs(i + 1).Caption)
    Next

一个可能的问题是VB6标签不是窗口控件,而是在窗体的窗口上绘制的。另一个可能的问题是,如果您使用的是某些第三方控件,那么它们很可能使用的是所有者绘制技术,这可能会产生意想不到的效果

我建议通过控制来缩小范围,看看他们是否有问题