본문 바로가기

C# WPF

콘트롤의 처리

윈도우 프로그램은 GUI(Graphical User Interface) 프로그램이다.

GUI 객체는 "사용자와 프로그램 사이에 정보교환을 위한 시각적 요소를 갖고 있는 객체"라고 할 수 있으며, 우리가 윈도우 프로그램에서 익히 보아왔던 Label, TextBox, Button 등을 얘기한다. 이렇게 시각적 요소를 가지고 있는 객체를 콘트롤(Control)이라 부른다.

콘트롤을 사용하려면 using System.Windows.Controls; 을 삽입해야 한다.

콘트롤은 많은 프로퍼티(속성)을 갖고 있는데, 프로퍼티는 콘트롤 마다 서로 다르다. 이중 Content 라는 프로퍼티는 많은 콘트롤들이 공통으로 갖고 있는데 말 그대로 내용물이라는 뜻이다.

A와 B가 콘트롤이라고 할 때, A.Content = B; 라고 쓰면 A의 내용에 B가 포함되게 된다. 이를 예를 통해 알아보자.

 다음의 예는 Window 안에 Button 콘트롤이 포함되어 있고, 이 Button 콘트롤에는 "버튼을 누르지 마세요"라는 글자가 표시되어 있다.

이를 위한 프로그램은 다음과 같다.

 controlTest 라는 클래스는 WIndow를 상속하므로 생성될 때 빈 윈도우를 하나 만들게 된다. 이 윈도우의 Title은 "Control Test"이면 폭과 높이는 각각 400, 300이다.

다음에 Button 콘트롤 btn을 하나 만들고, btn.Margin = new Thickness(10); 으로 설정했다. (콘트롤의 주변에 마진을 주는 Margin 프로퍼티도 대부분의 콘트롤에 있는 프로퍼티인데 btn.Margin = 10; 이라고 주면 에러가 나온다. 반드시 new Thickness(10); 과 같이 써주어야 한다.

Margin과 Padding 프로퍼티는 다음의 그림으로 설명하겠다.

 

27번째 줄 Content = btn;

이 문장은 윈도우의 Content를 btn으로 하라는 말이고, 이에 의해 윈도우에는 btn 이라는 버튼 콘트롤이 가득 차게 표시된다. btn.Content = "버튼을 누르지 마세요"; 라고 쓰여 있으니 윈도우에 가득찬 btn 버튼에는 그 글자가 표시된다.

이제 btn 버튼에 이벤트 처리함수를 추가해본다.

버튼 콘트롤에는 Click 라는 이벤트핸들러가 있다. 이를 사용하기 위해 btn.Click += 하고 Tab을 누르면 btn_Click 라고 이벤트처리함수를 표시한다. 앞에서와 같이 오른쪽 마우스 버튼을 누르고 생성->메서드 스텁을 누르면 이벤트 처리 함수를 파라미터까지 표시해 준다.

여기에서 btn_Click() 메소드 안의 코드를 지우고  MessageBox.Show("누르셨군요!!!", "확인 메시지박스"); 를 넣어준다

       // 생성자
        public controlTest()
        {
            Title = "Control Test";
            Width = 400;
            Height = 300;

            Button btn = new Button();
            btn.Margin = new Thickness(10);
            Content = btn;
            btn.Content = "버튼을 누르지 마세요";

            btn.Click +=btn_Click;
        }

        private void btn_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("누르셨군요!!!", "확인 메시지박스");
        }

프로그램이 실행될 때 btn 버튼을 눌러주면 다음과 같이 메시지박스가 나타난다.

 

 

프로그램을 수정하여

            TextBox txt = new TextBox();
            txt.Margin = new Thickness(10);
            txt.FontSize = 30;
            Content = txt;

부분을 Button 부분 아래, 위의 소스코드 창에서 29번째 줄에 추가해보자.

Content = txt; 라는 문장에 의해 윈도우의 내부는 새로 만든 txt라는 TextBox 콘트롤이 가득차게 된다. TextBox는 글자를 입력할 수 있으며, FontSize 프로퍼티를 30으로 세팅했으므로 TextBox에 "안녕하세요" 라고 입력하면 그림과 같이 큰 글씨로 표시될 것이다.

 

TextBox 프로퍼티 중에 VerticalContentAlignment를 Center로 맞추어 주면 글씨가 텍스트 상자의 중앙에 표시된다. (입력되는 글자를 중앙에 보여준다)

txt.VerticalContentAlignment = VerticalAlignment.Center;

 

이와 유사하지만, 아래와 같이 VerticalAlignment 속성을 Center로 바꾸어주면 TextBox 자체가 윈도우 화면의 중앙에 위치하게 된다.

txt.VerticalAlignment = VerticalAlignment.Center;

 

 

BeeEye 드무

 

'C# WPF' 카테고리의 다른 글

Grid Panel  (0) 2013.07.07
패널 콘트롤  (0) 2013.07.07
Event Handler 2  (0) 2013.07.07
Event Handler  (0) 2013.07.07
상속에 의한 윈도우 생성(2)  (0) 2013.07.07