如何动态地将.Net控件添加到vb6应用程序

时间:2009-06-23 23:09:03

标签: .net vb6 interop

我在使用VBScript扩展的应用程序上工作。我可以访问VB6表单,可以添加控件并引用表单上的其他控件。我也可以通过互操作启动.Net表单。

我希望能够创建对.Net组件的引用并将其引用到VB6 Frame或SSTab,然后让组件创建一个interop用户控件并将其放在Frame /中的SSTab。如果我只使用VBScript执行此操作,我会执行以下操作:

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

我希望能够在InteropUserControl中做类似的事情。在互操作用户控件上有一个名为Container的属性,但它是只读的,所以我不确定如何将控件放到父容器中。

任何建议都将受到赞赏。

此致

Shane Holder

1 个答案:

答案 0 :(得分:0)

如果你想知道如何动态添加控件,那很简单:

Form.Controls.Add(new MyControl())

如果你想控制一个父容器,那就是这样做的方法。看起来您无法动态更改父控件,因此您必须决定使用if / else逻辑将您的子控件添加到谁。示例PseudoCode:

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());
}

现在你没有对它的引用,但你可以稍后再获取它。