2011-01-25 3 views
1

이전 VB6 OCX 폼을 호스팅하는 데 사용하는 .NET Windows Form이 있습니다. 그것은 내가 실행할 수없는 것입니다! 적어도 지금은 ....NET Windows Form에서 호스팅되는 OCX의 예외/오류 캐치

이 단락이 유용 할 지 모르겠지만이 정보를 공유 할 수 있을지는 확실하지 않습니다. 이 컨트롤을로드하기 위해 .NET 애플리케이션은 OCX 컨트롤에 대한 정보를 포함하는 구성 파일을 제공합니다. 그런 다음 리플렉션을 사용하여 컨트롤을로드하고 Activator.CreateInstance를 사용하여 인스턴스를 만들고이 개체를 System.Windows.Forms.Control에 캐스팅합니다. 그런 다음 .NET 양식의 Controls 컬렉션에 추가합니다. 이 접근 방식은 나를 위해 작동합니다.

그래서, 내가 원한 것은 .NET 양식에서 OCX 예외 및 오류를 잡아 내거나이 OCX 양식이 손상되었다는 것을 알기위한 것입니다. 이것이 가능한가? 비슷한 경험을 가진 사람이 있습니까? 그런데 .NET 2.0을 사용하고 있습니다.

감사합니다. 지식이 아무도 아직 대답하지 않았다 때문에

답변

1

...

  • 당신은 VB6의 메소드/프로퍼티로 닷넷 코드에서 직접 호출하는 경우, VB6에서 제기 오류로 다시 전파한다 닷넷 예외.
  • VB6 코드에는 양식 및 컨트롤에 대한 이벤트 처리기가 포함될 것입니다. On Error Goto을 사용하여 해당 루틴에서 오류 핸들러가 필요합니다. I 처리되지 않은 오류로 인해 응용 프로그램이 중단됩니다 (Windows 이벤트 아래에서 호출 스택에 .Net 코드가 없음). 오류를 .Net으로 다시 전달하려면이를 수행 할 메커니즘을 만들어야합니다. VB6 구성 요소에서 사용자 지정 이벤트를 발생 시키거나 VB6에서 .Net으로 콜백을 제공하십시오.
+0

안녕 MarkJ. 당신의 대답이 정말로 도움이되었습니다. 당신은 당신의 전문성에 근거한 두 가지 선택권을 주셨습니다. 그리고 "지식이없는 사람은 아직 아무도 대답하지 않았으니 ..."라고 대답 할 것입니다. 다시 한번 귀하의 도움에 감사드립니다. –

+0

@ The Indiegent Glad 그것이 도움이되었습니다. VB6 interop을 읽었으므로 조금 불편 함을 느꼈습니다. 실제로는별로 사용하지 않았습니다! 나는 경험 밖에서 대답 할 수있는 사람들이 더 있어야한다고 생각했다. – MarkJ

관련 문제