티스토리 뷰

728x90

윈도우 폼에서 레이블(Label) 컨트롤은 출력만 하고 사용자의 입력을 받지 못하는 컨트롤이라 해서 대수롭게 여기지 않을 가능성이 있지만 의외로 레이블은 윈도우 폼에서 다양한 역할을 수행할 수 있습니다.


레이블 컨트롤은 텍스트 박스처럼 .Text 속성에 표시 내용을 지정할 수 있습니다. 레이블은 기본적으로는 외부 경계선이 없지만 .BorderStyle 속성을 설정해서 위의 예제처럼 읽기 전용 텍스트박스와 같은 효과를 낼 수 있습니다. 단, 레이블 컨트롤은 기본적으로 .AutoSize 속성을 True로 해서 .Text의 내용에 따라 컨트롤의 크기를(.Size) 자동 조정하도록 하는데 이 속성을 False로 설정해서 지정한 크기대로 표시하면 읽기 전용 텍스트 박스의 효과를 제대로 낼 수 있습니다.

레이블을 단순 텍스트 출력용이 아닌 이미지와의 복합 출력 및 이미지 출력 전용으로도 사용할 수 있습니다. .Image 속성에 이미지를 설정할 수 있으며 .ImageAlign 속성으로 이미지를 컨트롤 영역 내에서 어떻게 위치시킬지를 지정할 수 있습니다. 위의 예제에서 Label4는 MiddleLeft, Label5는 이미지를 MiddleRight로 표시하도록 지정했습니다. 이미지의 표시 위치 지정처럼 텍스트 내용도 .TextAlign 속성으로 .ImageAlign 속성처럼 지정할 수 있습니다. 기본은 Label2처럼 TopLeft입니다. 주의할 점은 AutoSize 속성이 False인 경우에만 적절하게 동작한다는 점입니다.



레이블의 변형으로 링크레이블(LinkLabel) 컨트롤이 있습니다. 링크레이블은 웹브라우저에서 <a> 태그로 설정하는 링크의 효과를 줄 수 있는 레이블입니다. 레이블 컨트롤의 대부분 그대로 가져오고 링크를 위해서 아래의 그림과 같은 추가 속성을 설정하면 됩니다. 


.LinkBehavior는 마우스를 링크에 올려두었을때 밑줄을 표시할지 색을 구분해서 표시할지를 위의 옵션처럼 설정합니다. 링크의 색은 .LinkColor(기본은 청색), .ActiveLinkColor(기본은 적색), .DisabledLinkColor(기본은 회색), .VisitedLinkColor(기본은 보라) 속성으로 지정할 수 있습니다. 웹브라우저 처럼 링크의 방문 여부를 .LinkVisited 속성으로 설정하거나 확인할 수 있습니다. .LinkArea 속성은 텍스트 중에서 링크 형태로 만들 텍스트 위치를 지정하는 속성으로 기본값은 텍스트 전체를 링크로 만듭니다. 속성의 내용은 (시작, 길이)의 의미로 손으로 위치를 지정할 수 있지만 우측의 [...] 버튼을 클릭해서 아래와 같이 링크 범위를 간편하게 지정할 수도 있습니다.


위 예제의 LinkArea 속성에는 (4,5) 값을 갖습니다. 링크를 클릭했을때의 동작은 다른 컨트롤처럼 .LinkClicked 이벤트에서 관련 처리 루틴을 기술하면 됩니다. 일반적인 레이블은 .Click 이벤트를 처리하면 됩니다.  .LinkClicked 이벤트로는 하나의 링크 레이블에 여러 링크가 있는 경우 어떤 링크가 클릭되었는지 e.Link.LinkData를 통해서 확인할 수 있도록 정보가 전달됩니다. 링크 클릭을 통해서 다른 폼을 열거나 웹 주소로 이동하는 등의 동작을 나름 지정하면 됩니다. 링크를 클릭했을때 특정 웹페이지를 열고자 할 때는 아래의 코드를 참조하세요. 아래의 코드는 링크레이블을 클릭하면 티스토리 홈페이지를 웹브라우저로 열도록 동작합니다.

    Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        System.Diagnostics.Process.Start("www.tistory.com")
    End Sub


텍스트박스, 레이블과 함께 윈도우 폼에서 가장 많이 사용하는 컨트롤인 버튼(Button) 컨트롤은 레이블 컨트롤 다루기와 큰 차이점이 없습니다. 텍스트(.Text)와 이미지(.Image)를 표시할 수 있으며 컨트롤의 영역 내에서 텍스트 및 이미지의 위치를 .TextAlign.ImageAlign 속성으로 조정할 수 있고 사용자의 클릭 이벤트를 .Click로 받는것도 동일합니다. 차이점은 우선 레이블 컨트롤은 TabStop 속성이 없으나 버튼 컨트롤은 TapStop 속성을 True로 설정하면 [Tab]을 통한 컨트롤 선택이 가능해 집니다. 또다른 차이점은 버튼의 모양과 관련된 것으로 .FlatStyle 속성으로 지정합니다.


위의 예제는 차례대로 Flat, Popup, Standard, System을 .FlatStyle에 지정한 것으로 일반적인 버튼의 모습과 마우스를 올려놓았을 때의 모습에서 각각 차이를 보입니다. 폼을 대화창(Dialog)으로 사용하는 경우에는 .DialogResult 속성에 대화창 결과로 넘길 결과를 설정할 수 있습니다(다중 폼(Form) 다루기 - VB.Net참조)

버튼 컨트롤의 경우에는 실제 버튼이 눌러지지 않아도 마치 버튼을 누른 것과 같은 효과를 낼 수 있는데 특정 버튼 컨트롤의 .PerformClick() 메소드를 활용하면 가상의 버튼 클릭 효과를 낼 수 있습니다.

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함