2011-01-25 22 views
1

我有一個.NET Windows窗體,用於託管較早的VB6 OCX窗體。這是我不能跑的東西!至少現在...從.NET Windows窗體中託管的OCX中捕獲異常/錯誤

我不確定這段文字是否有用,但以防萬一我會分享這些信息。爲了加載此控件,我的.NET應用程序提供了一個配置文件,其中將包含有關OCX控件的信息。然後,我將使用反射來加載控件,使用Activator.CreateInstance創建一個實例並將此對象轉換爲System.Windows.Forms.Control。然後,我將它添加到.NET窗體的Controls集合中。這種方法適用於我。

所以,我想要的是捕捉我的.NET窗體中的OCX異常和錯誤,或者有任何方式知道這個OCX窗體崩潰。這可能嗎?有沒有人有類似的經歷?順便說一下,我使用.NET 2.0。

感謝。

回答

1

由於沒有人更瞭解已經回答了可是...

  • 如果要調用從.NET代碼直接到在VB6的方法/屬性,在VB6引發的錯誤將傳播回.Net作爲例外。
  • VB6代碼將可能包含您的窗體和控件的事件處理程序。您需要在這些例程中使用錯誤處理程序,使用On Error Goto。我想認爲未處理的錯誤會導致應用程序崩潰(Windows事件下的調用堆棧中沒有.Net代碼)。如果您想將錯誤傳回.Net,您需要創建一個機制來執行此操作。從VB6組件提取自定義事件,或者從VB6提供一個回調到.Net的回調。
+0

嗨MarkJ。你的回答真的幫了我。你根據你的專業知識給了我兩個選擇。而且「因爲沒有人知道更多有答案......」我會將它標記爲答案。再次感謝您的幫助。 – 2011-01-26 10:30:54