2014-04-08 2 views
0

처음이 질문을하는 순간 나는이 일을 제대로하지 않으면 사과드립니다. 나는 수색으로 무엇이든을 찾아 낼 수 없었다.참조 된 C# 어셈블리 이벤트 실행을 기반으로 VB.NET 양식을 표시하는 방법?

VB.NET 레거시 Windows 응용 프로그램 프로젝트를 상속 받았습니다. 가능하면 새로운 모든 Windows Forms를 포함하여 C#에서 코드를 작성하고 싶습니다. 그래서, 나는 C# 어셈블리 (이것이 가장 좋은 방법인지는 확실하지 않음)에 VB.NET Windows 응용 프로그램에서 참조하는 새 Windows 양식을 가지고 있습니다. 참조 된 어셈블리에서 C# 폼을 초기화 할 때 C# Windows Form에 그리드 열과 레코드를 빌드하는 데 필요한 모든 매개 변수를 전달합니다. 지금까지 문제는 없습니다. C# 표의 셀 더블 클릭 이벤트에서 C# 어셈블리를 참조하는 응용 프로그램에서 기존 VB.NET Winform을 표시하려고합니다. 내 질문은 : VB.NET Windows Form에 핸들을 표시하거나 표시하려면 어떻게해야합니까? 순환 참조는 분명히 허용되지 않습니다. 그래서 가능하다면 C#이나 다른 방법으로 어떻게 이것을 할 수 있습니까?

+0

"손 잡기"는 다소 구체적이지 않습니다. 일반적으로 프로젝트의 어셈블리에 대한 참조 만 추가하면됩니다. 컴파일러는 작성된 언어가 무엇인지 상관하지 않습니다. VB.NET 프로젝트가 public *으로 선언하는 한 * new * 연산자를 사용하여 인스턴스를 만들고 Show() 메서드를 사용하여 표시 할 수 있습니다. –

답변

0

개체에 이벤트 처리기를 추가 할 수 있어야합니다.

http://msdn.microsoft.com/en-us/library/6yyk8z93%28v=vs.90%29.aspx

+0

감사합니다. 이는 실제로 'ShowForm'속성이 true 일 때마다 트리거하는 맞춤 이벤트가있는 클래스를 작성함으로써 끝난 것입니다. VB.NET 폼에서 C# 어셈블리 폼을 초기화 할 때 사용자 지정 이벤트에 이벤트 처리기를 할당합니다. 이 방법으로 나는 모든 C# 참조 된 어셈블리 Windows 폼을 관리 할 수있을뿐만 아니라 여러 가지 다른 이벤트를 추가 할 수 있습니다. – user3510816

0

한 가지 방법은 VB.NET 코드에서 인스턴스화 된 경우 C# Form에 일반 폼 만들기 처리기를 전달하는 것입니다. 이런 식으로 양식은 양식의 정확한 유형을 작성하고 표시해야하는지 알 필요가 없습니다. 그것이 알 수있는 것은 Form이라는 것인데, 당신이해야 할 일만 있으면 그것을 보여주는 것만으로도 충분합니다.

VB.NET 코드에서 처리 할 수있는 공개 이벤트로 C# Form 셀 두 번 클릭 이벤트를 노출하는 것도 좋습니다.

디자인에서 의미가있는 경우 세 번째 옵션은 브리지 역할을하는 세 번째 어셈블리를 사용하는 것입니다. 이 어셈블리는 VB.NET과 C# 어셈블리 모두에서 참조 할 수 있으며이 어셈블리에서 구현되거나 사용되는 인터페이스 유형을 보유합니다.

관련 문제