Как динамически добавлять элементы управления .Net в приложение vb6 - PullRequest
0 голосов
/ 24 июня 2009

Я работаю над приложением, которое расширяется с помощью VBScript. У меня есть доступ к форме VB6 и я могу добавить элементы управления и ссылаться на другие элементы управления в форме. Я также могу запускать .Net формы через взаимодействие.

То, что я хотел бы сделать, это создать ссылку на компонент .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 Ответ

0 голосов
/ 24 июня 2009

Хорошо, если вы хотите знать, как динамически добавлять элементы управления, это довольно просто:

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

Теперь у вас нет ссылки на него, но вы можете просто получить его позже.

...