Создание объекта управления пользователем во время выполнения - PullRequest
0 голосов
/ 05 января 2012

, пожалуйста, помогите мне создать пользовательский объект управления во время выполнения, используя функцию createobject или любую другую лучшую функцию в vb.net.

вот мой код:

Dim b As New Security.Sec_Role
b.Name = "Sec_Role" 
b.visible = true

но я хочу использовать этот код:

dim b as object
b = createobject("Security.Sec_Role")

но всегда возвращает ошибку:

Cannot create ActiveX component.

РЕДАКТИРОВАТЬ : я понял ... большое спасибо .. я использую эти коды:

Dim asm As System.Reflection.Assembly = Assembly.Load("Security")
Dim b As Object = Activator.CreateInstance(asm.GetType("Security.Sec_Role"))

Ответы [ 3 ]

2 голосов
/ 05 января 2012

Если это .Net UserControl, вы не сможете использовать CreateObject, если он не был представлен как объект Com в соответствии со страницей MSDN для CreateObject . Использование New будет правильным способом создания .Net UserControl.

Сверху ссылка:

Создает и возвращает ссылку на COM-объект. CreateObject не может использоваться для создания экземпляров классов в Visual Basic, если только эти классы явно представлены как компоненты COM.

Из этого MSDN Forum попробуйте что-то подобное, используя System.Activator.CreateInstance:

Dim oType As System.Type = Type.GetType("MyNamespace.ClassName")
Dim obj = System.Activator.CreateInstance(oType)
1 голос
/ 05 января 2012

Вы захотите использовать Activator.CreateInstance :

Dim b as object
b = Activator.CreateInstance(Nothing, "Sec_Role")

Будет проще, если этот метод находится в сборке с элементами управления. В противном случае вам нужно будет указать имя сборки в первом параметре.

1 голос
/ 05 января 2012

.Net классы не являются элементами управления ActiveX.
Вы не можете сделать это.

Возможно, вы ищете Reflection или словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...