2009-06-23 75 views
0

我在使用VBScript擴展的應用程序上工作。我可以訪問VB6表單,並可以添加控件並引用表單上的其他控件。我也可以通過interop啓動.Net表單。如何將.Net控件動態添加到vb6應用程序

我想要做的是創建一個.Net組件的引用,並將其引用到VB6 Frame或SSTab,然後讓該組件創建一個互操作用戶控件並將其放置在Frame中/的SSTab。如果我只使用VBScript來做到這一點我做類似如下:

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

我希望能夠做到在InteropUserControl類似的東西。在互操作用戶控件上有一個名爲Container的屬性,但它是隻讀的,所以我不確定如何將控件放入父容器。

任何意見,將不勝感激。

真誠,

巴蒂爾持有人

+1

它不應該是cmd1.Container =框架的Set語句,即。 Set cmd1.Container = frame – MarkJ 2009-06-25 19:18:43

回答

0

那麼,如果你想知道如何動態地添加控件,這是很簡單的:

Form.Controls.Add(new MyControl()) 

如果你想拿到的一個控件到父容器,這將是做到這一點的方式。看起來您不能隨時更改父控件,因此您必須決定使用if/else邏輯誰來添加您的子控件。例如僞代碼:

InterOpControl myControl = new InterOpControl(); 

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

如果你不能做到這一點,那麼你可以做:

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

現在你不必對它的引用,但你完全可以以後把它拿來。

+0

這會將它添加到表單中,但不會放入我希望顯示控件的特定容器中。 SSTab似乎沒有一個.Controls來添加其他控件。 框架有一個.Controls,但我目前有互操作問題,因爲Spy ++報告它是一個ThunderRT6Frame,我不知道如何獲得生成的Interop類。 – ShaneH 2009-06-24 16:46:15

相關問題