이번에는 WPF 프로젝트에서 Winform에 있는 컨트롤을 가져오는 방법에 대하여 알아보겠습니다.
저는 Visual Studio 2019에서 진행하였으니 참고해주세요. 2010 버전에서도 해당 방법으로 되는 것 확인하였습니다.
먼저 WPF 프로젝트에서 WindowFormsHost를 생성합니다.
- 생성하는 방법은 2가지입니다.
1. 위 사진처럼 도구 상자에서 끌어다 놓습니다.
(프로젝트 생성 후 처음 시도할경우 메세지가 뜨면서 안 될 수 있으나 한 번 더 시도하면 보통은 생성됩니다.)
2. xaml 코드로 생성하는 방법입니다. <Grid> </Grid> 사이같은 곳에
<WindowsFormsHost x:Name="winformhostTest" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
위와 같이 넣어주어도 됩니다. 기타 설정이나 컨트롤 명칭 등은 자유롭게 설정 가능합니다.
현재 위의 코드는 컨트롤명이 winformhostTest이고 가로, 세로 크기 둘 다 Grid 크기에 맞춘다는 뜻입니다.
그 다음 F7을 눌러 코드 화면으로 넘어갑니다.
적용하는 방법은 크게 2가지가 있습니다.
그리고 이번 글에서는 적용하는 곳을 바로 나타내기 위하여 Window의 Loaded 이벤트에서 진행하였습니다.
원하는 곳에다 아래와 같은 코드를 작성합니다.
저는 DateTimePicker로 했지만 컨트롤은 윈폼에 있는 것 아무거나 상관없습니다.
DateTimePicker dtp = new DateTimePicker();
winformhostTest.Child = dtp;
그리고 기본적으로 WPF에서는 윈폼 컨트롤을 사용하려면
using System.Windows.Forms;
를 추가해주어야 합니다.
그리고 실행하게되면 아래와 같이 나옵니다.
상단에 있는 메뉴는 Visual Studio 2019에서 해서 나타나는 것으로 보이며,
해당 글에서는 저것과 관련된 설정은 따로 하지 않았습니다.
그리고 또 다른 방법입니다.
해당 방법은 프로젝트에 폼을 생성한 후 그 안에 컨트롤을 만든 다음 꾸며서 가져오는 방법입니다.
경우에 따라서는 해당 방법이 훨씬 편할 수도 있습니다.
먼저 WPF 프로젝트에 폼을 생성합니다.
폼을 생성한 후 폼에 들어가서 WPF에 적용할 컨트롤을 만듭니다.
저는 DataGridView를 만들었습니다.
컨트롤을 생성하였다면 외부에서도 컨트롤을 변경할 수 있게 설정을 바꿔주어야 합니다.
WPF에서 가져다 쓸 컨트롤의 Modifiers 설정을 Public으로 변경해줍니다.
그 다음 WPF의 코드 창으로 넘어가서 아래와 같이 작성해줍니다.
Form1 form = new Form1(); // Form1은 생성한 윈폼 명칭입니다.
DataGridView gridView = form.dataGridView1; // dataGridView1은 Form1.cs에서 생성한 DataGridView의 명칭입니다.
winformHostTest.Child = gridView;
그러면 프로그램을 실행했을 때 아래와 같이 나타납니다.
다른 컨트롤들도 위와 같은 방법으로 적용하면 됩니다.
이상으로 WPF에서 Winform 컨트롤을 적용하는 방법에 대하여 알아보았습니다.
WPF ''{DependencyProperty.UnsetValue}'은(는) 'Background' 속성의 올바른 값이 아닙니다.' 오류 해결 방법 기록 (0) | 2022.11.24 |
---|---|
WPF에서 도형의 투명도가 적용이 안될 때 해결 방법 (0) | 2022.05.19 |
WPF에서 Rhino의 3dm 파일 불러오는 방법 (2) | 2022.05.17 |
WPF의 그라디언트(그라데이션) 관련 xaml 코드 분석 (0) | 2020.12.10 |
C# WPF 둥근 모서리의 버튼 만들기 (0) | 2020.12.10 |
댓글 영역