다음을 통해 공유


연습: 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 컨트롤을 호스팅하려면

  1. HostingWfInWpf라는 WPF 응용 프로그램 프로젝트를 만듭니다.

  2. 솔루션 탐색기에서 WindowsFormsIntegration.dll이라는 WindowsFormsIntegration 어셈블리에 대한 참조를 추가합니다.

  3. 솔루션 탐색기에서 System.Windows.Forms.dll이라는 Windows Forms 어셈블리에 대한 참조를 추가합니다.

  4. WPF Designer에서 Window1.xaml을 엽니다.

  5. 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>
    
  6. 코드 편집기에서 Window1.xaml.cs를 엽니다.

  7. 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 컨트롤

참조

ElementHost

WindowsFormsHost

기타 리소스

WPF 디자이너

마이그레이션 및 상호 운용성 방법 항목