문제

VB 컨트롤 (레이블 등) 및 Windows Common Control (TreeView, ImageList 등)이있는 형식이있는 VB6 프로젝트를 상속했습니다.

.NET WinForms 프로젝트에서 사용할 OCX ActiveX 컨트롤로 컴파일 할 가능성이 동료에게 언급했습니다. C ++ 프로젝트에서 VB OCX를 사용한 이전 경험으로 인해 약간 끔찍했습니다. 프로토 타이핑 단계에서는 모든 것이 괜찮 았지만 실제에 사용될 때 타이밍 및 새로 고침 문제가있었습니다 (대화 상자의 많은 컨트롤, 컨트롤 사이의 탭, 활성화 된 활성화 대화 상자 등).

.NET Windows 양식에서 VB6 저자 OCX를 사용한 경험이 있습니까? 미묘한 문제를 기대할 수 있습니까? 아니면 함께 잘 플레이 할 수 있습니까?

도움이 되었습니까?

해결책

나는 .net-> vb 6.0에서 Interop은 툴킷 2.0을 형성합니다 이 목적을 위해 Microsoft에서. 나는 이것을 여러 번했다. 다른 방식으로가는 것은 고통 스러울 수 있습니다.

당신의 동료가 걱정하는 것은 매우 현실적입니다. 들어오는 문제는 어떤 시대에 통제가 집중되는지, 그리고 특정 생각이 후드 아래에서 어떻게 처리되는지입니다. 이것의 대표적인 예는 컨트롤을 가로 질러 탭하는 것입니다.

일부 .NET 컨트롤과 VB 6 Active X가있는 .NET 양식이 있다고 생각하십시오.이 ActiveX에는 제어 기능도 있습니다. 이제 .NET 양식을 가로 질러 탭하면 ActiveX에 도착하면 예상하다 모든 컨트롤을 가로 질러 탭합니다 안에 ActiveX, 그러나 당신은 그렇지 않습니다! 전체 ActiveX 컨트롤을 한 번에 탭합니다. 이것은 문제입니다.

이제 다른 길을 가고 있다면 VB 6.0의 .NET. 이것 Codeproject 기사, ActiveXhelpers라는 훌륭한 클래스가 있습니다. 그러나 기본적으로 키 프레스 이벤트를 수동으로 처리하고 탭 또는 Shift+탭을 확인하고 다음/이전 컨트롤에 수동으로 초점을 맞추는 데 따릅니다.

이제 귀하의 상황에서는 이와 같이 행동하려면 VB 6 코드를 수정해야합니다. .NET에서 컨트롤을 다시 작성하려는 노력이 줄어들 것입니다. 나는 결코 경험적이고 상쾌한 문제를 겪지 않았지만, 내가 말한 것처럼, 나는 단지 .net-> vb를 갔다. 어느 쪽이든 많은 고통이 발생할 가능성이 높으며 VB의 디자인과 런타임의 차이점을 말하는 것과 같은 다른 문제가있을 수 있습니다.

다른 팁

불행히도 나는 반에만 답을 가지고 있습니다. .NET 양식에서 단일 VB6 OCX 컨트롤을 사용하며 문제없이 작동합니다. 해당 양식의 다른 .NET 또는 OCX 컨트롤에는 사용되지 않습니다. 데이터베이스에 대한 특수보기를 제공합니다.

우리의 소프트웨어 제품군에는 VB6과 .NET가 혼합되어 있습니다. VB.NET 및 C# 응용 프로그램 모두에서 여러 VB6 저자 ActiveX 컨트롤을 사용합니다. 대부분의 경우 놀랍게도 잘 작동합니다.

우리가 가진 가장 큰 두통은 VB6 컨트롤 버전이 변경되면 .NET 프로젝트에서 참조를 다시 설명해야한다는 것입니다. .NET Interop 라이브러리는 특정 버전의 컨트롤에 연결되어있는 것으로 보이며 프로젝트에서 인터롭을 제거하고 재현하지 않고는 새 버전의 인터 로프를 재생할 수 없습니다. 약간의 고통이지만, 나는 그것을하는 방법을 찾았으므로 모든 컨트롤의 모든 사례를 제거하고 재현 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top