2009-06-23 4 views
0

VBScript를 사용하여 확장 가능한 응용 프로그램에서 작업합니다. VB6 폼에 액세스 할 수 있으며 폼에 컨트롤을 추가하고 다른 컨트롤을 참조 할 수 있습니다. 또한 interop을 통해 .Net 양식을 시작할 수 있습니다..Net 컨트롤을 vb6 응용 프로그램에 동적으로 추가하는 방법

내가 할 수있게하려면 .NET 구성 요소에 대한 참조를 만들고 VB6 프레임 또는 SSTab에 대한 참조를 전달한 다음 구성 요소에 interop 사용자 정의 컨트롤을 만들어 프레임에 배치해야합니다./SSTab.

set frame = Form.Controls("Frame1") 
set cmd1 = Form.Controls.Add("vb.commandbutton", "Cmd1") 
cmd1.Container = frame 
cmd1.Visible = true 

나는 InteropUserControl에서 비슷한 일을 할 수있을 것으로 예상 : 나는이 작업을 수행하는 단지의 VBScript를 사용하는 경우 나는 다음과 같은 일을. Interop 사용자 컨트롤에는 Container라는 속성이 있지만 읽기 전용이므로 상위 컨테이너로 컨트롤을 가져 오는 방법을 모르겠습니다.

모든 조언을 주시면 감사하겠습니다.

Form.Controls.Add(new MyControl()) 

당신이 부모에 컨트롤을 얻고 싶었다 경우 : 감사합니다

,

+1

cmd1.Container = 프레임에 대한 Set 문이 아니어야합니다. 즉, Set cmd1.Container = frame – MarkJ

답변

0

그럼 당신은 동적으로 컨트롤을 추가하는 방법을 알고 싶다면

쉐인 홀더, 매우 간단합니다 컨테이너, 그렇게 할 수있는 방법. 즉석에서 부모 컨트롤을 변경할 수없는 것처럼 보이므로 if/else 논리를 사용하여 자식 컨트롤을 추가 할 사용자를 결정해야합니다. 예 의사 코드 :

if (someVariable) { 
    Form1.Controls.Add(new InterOpControl()); 
} 
else { 
    Form2.Controls.Add(new InterOpControl()); 
} 

지금 당신에 대한 참조를 가지고 있지 않지만, 당신은 단순히 나중에 가져올 수 있습니다 :이 작업을 수행 할 수없는 경우

InterOpControl myControl = new InterOpControl(); 

if (someVariable) { 
    Form1.Controls.Add(myControl); 
} 
else { 
    Form2.Controls.Add(myControl); 
} 

, 당신은 할 수 있습니다.

+0

이렇게하면 폼에 추가되지만 컨트롤을 표시 할 특정 컨테이너에는 추가되지 않습니다. SSTab에는 다른 컨트롤을 추가 할 .Controls가없는 것 같습니다. 프레임에는 .Controls가 있지만 현재 Spy ++에서 ThunderRT6Frame이며 Interop 클래스를 생성하는 방법을 모르겠 음을보고하는 중 interop에 문제가 있습니다. – ShaneH

관련 문제