연습: Windows Presentation Foundation에서 Windows Forms 컨트롤 호스팅
업데이트: 2007년 11월
WPF는 다양한 기능 집합이 포함된 많은 컨트롤을 제공합니다. 그러나 WPF 페이지에서 Windows Forms 컨트롤을 사용해야 하는 경우가 있습니다. 예를 들어 기존 Windows Forms 컨트롤에 많은 투자를 했거나 고유한 기능을 제공하는 Windows Forms 컨트롤을 사용하고 있을 수 있습니다.
이 연습에서는 코드를 사용하여 WPF 페이지에서 Windows FormsSystem.Windows.Forms.MaskedTextBox 컨트롤을 호스팅하는 방법을 보여 줍니다.
이 연습에 표시된 작업의 전체 코드 목록은 Windows Presentation Foundation에서 Windows Forms 컨트롤 호스팅 샘플을 참조하십시오.
참고 표시되는 대화 상자와 메뉴 명령은 실제 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
- Visual Studio 2008.
Windows Forms 컨트롤 호스팅
MaskedTextBox 컨트롤을 호스팅하려면
HostingWfInWpf라는 WPF 응용 프로그램 프로젝트를 만듭니다.
솔루션 탐색기에서 WindowsFormsIntegration.dll이라는 WindowsFormsIntegration 어셈블리에 대한 참조를 추가합니다.
솔루션 탐색기에서 System.Windows.Forms.dll이라는 Windows Forms 어셈블리에 대한 참조를 추가합니다.
WPF Designer에서 Window1.xaml을 엽니다.
Window1.xaml에서 자동으로 생성된 XAML을 다음 XAML로 바꿉니다.
<Window x:Class="Window1" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="HostingWfInWpf" Height="300" Width="300" Loaded="WindowLoaded" > <Grid Name="grid1"> </Grid> </Window>
<Window x:Class="HostingWfInWpf.Window1" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="HostingWfInWpf" Loaded="WindowLoaded" > <Grid Name="grid1"> </Grid> </Window>
코드 편집기에서 Window1.xaml.cs를 엽니다.
Window1.xaml.cs의 코드를 다음 코드로 바꿉니다.
Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Data Imports System.Windows.Documents Imports System.Windows.Media Imports System.Windows.Media.Imaging Imports System.Windows.Shapes Imports System.Windows.Forms ' Interaction logic for Window1.xaml Partial Public Class Window1 Inherits Window Public Sub New() InitializeComponent() End Sub Private Sub WindowLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs) ' Create the interop host control. Dim host As New System.Windows.Forms.Integration.WindowsFormsHost() ' Create the MaskedTextBox control. Dim mtbDate As New MaskedTextBox("00/00/0000") ' Assign the MaskedTextBox control as the host control's child. host.Child = mtbDate ' Add the interop host control to the Grid ' control's collection of child controls. Me.grid1.Children.Add(host) End Sub 'WindowLoaded End Class
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Shapes; using System.Windows.Forms; namespace HostingWfInWpf { public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void WindowLoaded(object sender, RoutedEventArgs e) { // Create the interop host control. System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost(); // Create the MaskedTextBox control. MaskedTextBox mtbDate = new MaskedTextBox("00/00/0000"); // Assign the MaskedTextBox control as the host control's child. host.Child = mtbDate; // Add the interop host control to the Grid // control's collection of child controls. this.grid1.Children.Add(host); } } }
참고 항목
작업
연습: Windows Presentation Foundation에서 XAML을 사용한 Windows Forms 컨트롤 호스팅
Windows Presentation Foundation에서 Windows Forms 컨트롤 호스팅 샘플
개념
연습: Windows Presentation Foundation에서 Windows Forms 합성 컨트롤 호스팅
연습: Windows Forms에서 Windows Presentation Foundation 컨트롤 호스팅
Windows Forms 컨트롤 및 해당 WPF 컨트롤