사용자 정의 컨트롤에 코드 추가
업데이트: 2007년 11월
이 단원에서는 사용자 정의 컨트롤에 코드를 추가하여 전체 이름을 표시하고 새 속성을 노출하는 방법을 배웁니다.
사용자 정의 컨트롤에는 표준 컨트롤과 마찬가지로 속성, 메서드 및 이벤트가 있습니다. 개발자는 컨트롤의 이벤트를 처리할 코드를 작성하고 컨트롤 사용자에게 노출되는 속성을 결정합니다.
사용자 정의 컨트롤의 이벤트 처리
유용한 사용자 정의 컨트롤을 만들려면 컨트롤의 이벤트를 처리할 코드를 작성해야 합니다. 사용자 정의 컨트롤의 이벤트 처리 프로시저를 작성하는 작업은 폼이나 컨트롤의 이벤트 처리 프로시저를 작성하는 작업과 차이가 없습니다.
이 예제에서는 사용자가 입력할 때 TextChanged 이벤트 처리기를 사용하여 FullName 레이블을 FirstName, MiddleName 및 LastName 상자의 내용으로 업데이트하는 이벤트 프로시저를 작성합니다.
실습
사용자 정의 컨트롤에 코드를 추가하려면
이전 단원에서 만든 NamesUserControl 프로젝트를 엽니다. 프로젝트를 저장하지 않았으면 먼저 이전 단원 사용자 정의 컨트롤 디자이너 이해로 돌아가서 저장 절차를 완료합니다.
솔루션 탐색기에서 NamesControl.vb를 선택한 다음 보기 메뉴에서 코드를 선택합니다.
코드 편집기에서 다음과 같은 FirstName_TextChanged 이벤트 프로시저 코드를 추가합니다.
Private Sub FirstName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FirstName.TextChanged, MiddleName.TextChanged, LastName.TextChanged ' Display the contents of the three text boxes in the label. FullName.Text = FirstName.Text & " " & MiddleName.Text & " " & LastName.Text End Sub
F5 키를 눌러 프로그램을 실행합니다. UserControl TestContainer가 열리고 사용자 정의 컨트롤이 표시됩니다.
세 개의 텍스트 상자에 이름, 중간 이름, 성을 입력합니다. 입력할 때 FullName 레이블에 이름이 표시됩니다.
위에서 입력한 코드를 보면 선언의 Handles 절이 세 TextBox 컨트롤 모두에 대한 TextChanged 이벤트를 처리하는 것을 알 수 있습니다. 어떤 텍스트 상자에 먼저 입력하든 관계없이 FullName 레이블은 항상 입력할 때 업데이트됩니다.
사용자 정의 컨트롤의 속성 노출
표준 컨트롤의 속성을 사용하면 디자인 타임과 런타임에 컨트롤의 값을 설정하고 검색할 수 있습니다. 또한 사용자 정의 컨트롤의 특정 속성을 디자인 타임에 속성 창에서 설정하고 코드에서 참조할 수 있도록 해야 할 수 있습니다.
사용자 정의 컨트롤의 속성을 노출하는 것은 클래스의 속성을 노출하는 것과 매우 비슷하며, 주된 차이점은 사용자 정의 컨트롤에 포함된 컨트롤의 속성도 노출할 수 있다는 점입니다. 클래스의 경우와 마찬가지로 속성을 선언하고 Get 및 Set 프로시저에 코드를 추가합니다. 포함된 컨트롤의 속성을 노출하는 경우 값을 저장할 private 변수를 선언할 필요가 없습니다. 컨트롤의 속성에 저장되기 때문입니다.
따라서 FirstName, MiddleName 및 LastName 컨트롤에 입력된 텍스트 또는 FullName 레이블의 값을 검색할 방법이 없습니다. 컨트롤을 유용하게 만들려면 값을 속성으로 노출시켜야 합니다. FullName 레이블의 값이 코드 외부에서 변경되는 것을 원하지 않기 때문에 읽기 전용 속성으로 노출시킵니다.
실습
속성을 추가하려면
코드 편집기에서 다음 코드를 추가하여 FirstName, MiddleName 및 LastName 값을 속성으로 노출시킵니다.
Property FirstNameText() As String Get Return FirstName.Text End Get Set(ByVal value As String) FirstName.Text = value End Set End Property Property MiddleNameText() As String Get Return MiddleName.Text End Get Set(ByVal value As String) MiddleName.Text = value End Set End Property Property LastNameText() As String Get Return LastName.Text End Get Set(ByVal value As String) LastName.Text = value End Set End Property
다음 코드를 추가하여 FullName 레이블의 값을 읽기 전용 속성으로 노출시킵니다.
ReadOnly Property FullNameText() As String Get Return FullName.Text End Get End Property
F5 키를 눌러 프로그램을 실행합니다.
UserControl TestContainer에서 속성 표의 맨 아래로 스크롤하여 FirstNameText 속성을 선택합니다. 이름을 입력한 다음 FullNameText 속성을 선택합니다. 그러면 FirstName 텍스트 상자에 이름이 표시되고 FullNameText 속성과 일치해야 합니다.
속성 표와 컨트롤 모두에서 다른 속성을 변경하여 어떤 관계가 있는지 살펴봅니다. 컨트롤 사용자는 디자인 타임에 이 동작을 경험합니다.
파일 메뉴에서 모두 저장을 선택하여 작업을 저장합니다.
다음 단계
이 단원에서는 사용자 정의 컨트롤에서 이벤터를 처리하는 방법과 속성 일부를 노출하는 방법을 배웠습니다. 자세히 보기: 명명된 값이 포함된 속성 추가에서 속성에 대해 좀 더 살펴보거나 다음 단원으로 이동하여 만든 컨트롤을 사용하는 방법을 배울 수 있습니다.
다음 단원: 사용자 정의 컨트롤 테스트