我正在尝试开发一个.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
答案 0 :(得分:0)
一个可能的问题可能是VB6标签不是窗口控件,而是在窗体的窗口上绘制。另一个可能的问题是,如果你使用某些第三方控件,很可能他们正在使用可能会做出意想不到的事情的所有者绘制技术。
我建议尝试通过控制来缩小范围,看看是否有任何问题。