2013-08-15 2 views
0

저는 인스턴스와 클래스에 대해 저의 머리를 감싸는 데 도움이 필요합니다. 아래의 코드에서 main_form을 가지고 있고 main_form에 user_control을로드하고 있습니다. main_form 내부에있는 속성을 사용하여 obj라는 데이터를 설정합니다. 내 질문은 내가 user_control 내부에서 일을 할 때, 어떻게 접근 할 수 있고 main_form의 obj 속성을 설정할 수 있는가이다. main_form.obj 시도했지만 "개체 참조가 개체의 인스턴스로 설정되지 않습니다"오류가 계속. 그래서 어떻게해야할지 모르겠습니다. 여기에 아래로 무식 코드VB.net 다른 클래스의 클래스 속성에 액세스하십시오.

Public Class FormControlClass 
Private _obj As New objCollection 

Public Property obj As objCollection 
    Get 
     Return _obj 
    End Get 
    Set(ByVal value As objCollection) 
     _obj = value 
    End Set 
End Property 

'Load User Control Into Form from here. 
me.controls.add('UserControl') 

End Class 


Public Class UserControlClass 

'Access the obj property in the form control class from here. 
FormControlClass.obj = 1 

End Class 

답변

0

당신이 뭘 하려는지 할 수있는 경우에도이 특정 양식에 사용자 정의 컨트롤을 결합 될 수 있기 때문에, 그것은이 쓸모 외부 만들기, 좋은 생각이 될 것입니다 형태.

대신 사용자 정의 컨트롤에서 양식을 구독하고 처리 할 수있는 이벤트를 생성해야합니다. 즉, 사용자 정의 컨트롤이 같은 폼에 전달 될 수있는 메시지 작성 만들고 싶어 : 당신의 폼 클래스 지금

Public Class UserControlClass 
    ' Define event that will be raised by user control to anyone interested in handling the event 
    Public Event UC_Button1Click() 

    ' Mechanism to allow event to be raised by user control 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     RaiseEvent UC_Button1Click() 
    End Sub 
End Class 

을, 당신은에 의해 제기 된 이벤트에 대한 처리기를 추가 할 필요가 이 같은 사용자 정의 컨트롤 :

AddHandler userControl1.UC_Button1Click, AddressOf Button1_Click 

마지막으로,이처럼 AddressOf 구문에서 참조하는 방법을 만들 것은 :

Public Sub Button1_Click(ByVal sender As Object, ByVal args As EventArgs) 
    ' Do something here 
End Sub 
+0

좋아, 나는 그 부분을 가지고있다. 자, 내 사용자 컨트롤 안에있을 때. 양식 컨트롤 클래스에서 내 속성을 검색하려면 어떻게해야합니까? 'FormControlClass.MyProperty'를 사용하면 객체의 인스턴스로 설정되지 않은 객체를 던집니다. – joeb

+0

사용자 콘트롤의 인스턴스를 통해 사용자 콘트롤의 속성을 참조해야하기 때문에'userControl1.obj'를 의미하는 것 같아요. 'userControl1'이라는 이름입니다. –

+0

나는 사용자 컨트롤이 페이지 (폼) 안에 존재한다는 개념에 어려움을 겪고 있다고 생각하지만, 그것들은 자신의 부모에게 손을 내밀고 그들의 속성을 제어하려고하지 않는다. 왜냐하면 그것들은 특정 상황의 컨텍스트 외부에서 재사용 할 수 없기 때문이다. 페이지. 사용자 컨트롤이 페이지 (양식)에서 정확히 변경/업데이트되기를 원하십니까? 이 동작을 원하면 페이지의 사용자 정의 컨트롤 부분에있는 내용을 만드십시오. 내 원래 예제에서 –

관련 문제