2012-01-05 5 views
0

런타임에 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")) 
+1

무엇을하려하십니까? – SLaks

+0

나는 2 개의 프로젝트를 가지고 있는데, 하나는 메인이고 다른 하나는 또한 내가 만든 usercontrols의 컬렉션이다. 사용자 컨트롤의 이름은 데이터베이스에 저장되므로 쉽게 개체를 호출 할 수 있습니다. 하지만 어떻게 내 주요 프로젝트에서 만들 수 있습니다. – illumi

답변

2

.Net UserControl 인 경우 CreateObject의 MSDN 페이지에 따라 Com 개체로 노출되지 않은 한 CreateObject을 사용할 수 없습니다. 새로 만들기를 사용하면 .Net UserControl을 만드는 적절한 방법이 될 수 있습니다. 위의 링크에서

:

Creates and returns a reference to a COM object. CreateObject cannot be used to create instances of classes in Visual Basic unless those classes are explicitly exposed as COM components.

MSDN Forum에서이 System.Activator.CreateInstance 사용하여이 같은 시도 :

Dim oType As System.Type = Type.GetType("MyNamespace.ClassName") 
Dim obj = System.Activator.CreateInstance(oType) 
+0

이 시나리오에서 더 나은 해결 방법을 제안 할 수 있습니까? – illumi

+0

몇 가지 다른 사용자 컨트롤이 무엇을 말하고 있습니까? 합리적인 숫자 인 경우 객체를 반환하는 select 문이있는 함수를 만들어보십시오. –

+0

약 30 개의 컨트롤 ... 나중에 추가 할 수도 있지만 양식을 작성/호출하는 것은 내 문제입니다. – illumi

1

.Net 클래스는 ActiveX 컨트롤이 아닙니다.
그럴 수 없습니다.

당신은 반사 또는 사전을 찾고 있을지도 모른다.

+0

해당 컨트롤을 만들 수 있습니까? – illumi

+0

문자열을 사용하는 이유는 무엇입니까? – SLaks

+0

왜냐하면 .. 컨트롤은 데이터베이스의 데이터를 기반으로합니다. 예를 들어 데이터베이스에서 sec_role을 선택하면 이름이 sec_role 인 생성 된 컨트롤이 호출됩니다. – illumi

1
당신이 원하는 것

Activator.CreateInstance을 사용 :

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

그것은 쉬운 것 이 방법이 어셈블리에있는 경우 컨트롤이 있습니다. 그렇지 않으면 첫 번째 매개 변수에 어셈블리 이름을 제공해야합니다.

+0

자세히 설명해 주시겠습니까? – illumi

+0

오, 알 겠어 ... 나는 그것을 시도하고 최대한 빨리 응답. 고마워. – illumi

+0

오류를 반환합니다 " 'SimSolInc, 버전 = 1.0.0.0, Culture = neutral, PublicKeyToken = null'어셈블리에서 'Sec_Role'유형을로드 할 수 없습니다." – illumi

관련 문제