Winform 사용자 정의 컨트롤

예를 들어 Winform에서 제공하지 않는 기능이 컨트롤에 필요할 경우가 있습니다. 이런 경우 사용자가 직접 컨트롤을 만들 있습니다. 사용자가 직접 컨트롤을 제작하여 하나의 도구처럼 등록을 하게 경우, 재사용성면에서도 이득을 있고, 외부의 사용자 정의 컨트롤을 사용해서 개발비용절감 효과도 얻을 있습니다.

 

 

실습

 Winform 에서 만든 사용자 정의 컨트롤을 WPF에 적용시키는 방법에 대해서 실습을 해보겠습니다. 사용자 정의 컨트롤에 대한 설명은 다른 발표자가 이전에 발표를 했기 때문에 설명은 생략하겠습니다.

 지금부터 단계별로 설명 하도록 하겠습니다.

 

실습 (1)


-----------------------------------------------------------------------------------------------------------

 우선 WPF 응용 프로그램으로 프로젝트를 하나 생성합니다.

 

 

 

실습 (2)

 

 

-----------------------------------------------------------------------------------------------------------

 Windows.Forms.Integration System.Windows.Forms 를 참조 추가 합니다.

 

실습 (3)


 -----------------------------------------------------------------------------------------------------------

 사용할 사용자 정의 컨트롤을 참조 추가 합니다.

 

실습 (4)


-----------------------------------------------------------------------------------------------------------

  도구 상자에 있는 WindowsFormsHost 도구를 폼에 추가해줍니다. 이 도구는 WindowsForm 컨트롤을 WPF 요소에 배치할 경우 사용하게됩니다.

 

실습 (5)

 

private void Window_Loaded(object sender, RoutedEventArgs e)

{

      base.OnInitialized(e);

      UserCon.UserControl1 uc = new UserCon.UserControl1();

      windowsFormsHost1.Child = uc;

      uc.ListItemsCountChangeHandler += new UserCon.UserControl1.ChangeListItemsCount(OnListItemCounter);

}

-----------------------------------------------------------------------------------------------------------

위와 같은 코드를 코드보기에서 클래스안에 작성합니다.

UserCon.UserControl1 이 부분은 (Namespace.Class) 의 형태로 작성합니다.

uc 라는 객체를 하나 생성합니다. 그리고 전 단계에서 추가했던 WindowsFormsHost의 차일드로 uc 라는 객체를 추가하게 됩니다.

 

uc.ListItemsCountChangeHandler+=new UserCon.UserControl1.ChangeListItemsCount(OnListItemCounter);

이 부분은 사용자정의컨트롤에서 발생하는 이벤트를 구현해주는 부분입니다. 제가 참조한 사용자정의컨트롤에서는 리스트박스에 추가되는 항목의 개수를 넘겨주는 이벤트를 등록했는데요, 이 부분을 구현해주어야 합니다.

 

 

 

 

 

실습 (6)

 

void OnListItemCounter(int itemscount)

        {

            textBox1.Text = itemscount.ToString();

        }

 

위와 같이 이벤트에 반응할 코드를 작성해 주시면 됩니다.

  이번 예제에서는 textBox를 하나 생성 한 후, 매개변수로 넘어오는 itemscount 의 값을 TextBox에 출력시키는 코드를 작성하였습니다.

 

실행 결과

 

 실행 결과는 다음과 같습니다. 빨간색으로 표시한 부분이 참조한 사용자정의컨트롤이고, 아래에 있는 텍스트 박스는 WPF 에서 추가한 텍스트 박스입니다. 작동이 잘 되는 것을 확인 할 수 있습니다.

 

Posted by ... XJAPAN