2011-10-11 69 views
0

我試圖建立一個.NET類更新VB6的形式和它的各種新的字幕控制(這是一個組件是COM可見)。.NET互操作傳遞VB6表按地址

我通過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%,但occasioanlly我得到運行時錯誤80131500沒有這樣的接口(E_NOINTERFACE

我不知道究竟在何處,這是引發錯誤,但任何人都可以看到什麼明顯的問題呢?

編輯

這個問題似乎在本節正在發生:

​​
+1

不需要'ByRef'。 – SLaks

回答

0

一個可能的問題可能是VB6標籤不是窗口控件,而是繪製表格的窗口。另一個可能的問題是,如果你使用某些第三方控件很可能是他們在使用所有者繪製可能做意想不到的事情技術。

我建議試圖通過控制縮小它,看看其中是否有問題。