상세 컨텐츠

본문 제목

WPF에 Winform 컨트롤 가져오기

프로그래밍/WPF

by TickTack 2022. 2. 20. 22:26

본문

이번에는 WPF 프로젝트에서 Winform에 있는 컨트롤을 가져오는 방법에 대하여 알아보겠습니다.

저는 Visual Studio 2019에서 진행하였으니 참고해주세요. 2010 버전에서도 해당 방법으로 되는 것 확인하였습니다.

먼저 WPF 프로젝트에서 WindowFormsHost를 생성합니다.

 

WPF 디자인 화면의 도구 상자

 

- 생성하는 방법은 2가지입니다.

1. 위 사진처럼 도구 상자에서 끌어다 놓습니다.

   (프로젝트 생성 후 처음 시도할경우 메세지가 뜨면서 안 될 수 있으나 한 번 더 시도하면 보통은 생성됩니다.)

2. xaml 코드로 생성하는 방법입니다. <Grid> </Grid> 사이같은 곳에

<WindowsFormsHost x:Name="winformhostTest" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

위와 같이 넣어주어도 됩니다. 기타 설정이나 컨트롤 명칭 등은 자유롭게 설정 가능합니다.

현재 위의 코드는 컨트롤명이 winformhostTest이고 가로, 세로 크기 둘 다 Grid 크기에 맞춘다는 뜻입니다.

 

그 다음 F7을 눌러 코드 화면으로 넘어갑니다.

적용하는 방법은 크게 2가지가 있습니다.

그리고 이번 글에서는 적용하는 곳을 바로 나타내기 위하여 Window의 Loaded 이벤트에서 진행하였습니다.

 

1. 코드로 생성하여 적용

원하는 곳에다 아래와 같은 코드를 작성합니다.

저는 DateTimePicker로 했지만 컨트롤은 윈폼에 있는 것 아무거나 상관없습니다.

 

DateTimePicker dtp = new DateTimePicker();
winformhostTest.Child = dtp;

 

그리고 기본적으로 WPF에서는 윈폼 컨트롤을 사용하려면

using System.Windows.Forms;

를 추가해주어야 합니다.

그리고 실행하게되면 아래와 같이 나옵니다.

 

DateTimePicker가 나타난 화면

 

상단에 있는 메뉴는 Visual Studio 2019에서 해서 나타나는 것으로 보이며,

해당 글에서는 저것과 관련된 설정은 따로 하지 않았습니다.

그리고 또 다른 방법입니다.

 

2. 폼을 생성한 후 컨트롤을 만든 다음 가져오기

해당 방법은 프로젝트에 폼을 생성한 후 그 안에 컨트롤을 만든 다음 꾸며서 가져오는 방법입니다.

경우에 따라서는 해당 방법이 훨씬 편할 수도 있습니다.

먼저 WPF 프로젝트에 폼을 생성합니다.

 

프로젝트에 마우스 우 클릭 후 진행 과정

 

 

폼을 생성한 후 폼에 들어가서 WPF에 적용할 컨트롤을 만듭니다.

저는 DataGridView를 만들었습니다.

 

 

컨트롤을 생성하였다면 외부에서도 컨트롤을 변경할 수 있게 설정을 바꿔주어야 합니다.

WPF에서 가져다 쓸 컨트롤의 Modifiers 설정을 Public으로 변경해줍니다.

 

 

그 다음 WPF의 코드 창으로 넘어가서 아래와 같이 작성해줍니다.

 

Form1 form = new Form1();  // Form1은 생성한 윈폼 명칭입니다.
DataGridView gridView = form.dataGridView1;  // dataGridView1은 Form1.cs에서 생성한 DataGridView의 명칭입니다.
winformHostTest.Child = gridView;

 

그러면 프로그램을 실행했을 때 아래와 같이 나타납니다.

 

WPF에 적용된 DataGridView

 

다른 컨트롤들도 위와 같은 방법으로 적용하면 됩니다.

 

이상으로 WPF에서 Winform 컨트롤을 적용하는 방법에 대하여 알아보았습니다.

관련글 더보기

댓글 영역