Partilhar via


Demonstra Passo a passo: Hospedagem de um controle de formulários do Windows no Windows Presentation Foundation

O WPF fornece muitos controles com um conjunto rico de características. Entretanto, você às vezes pode quere utilizar controles de Windows Forms nas suas páginas WPF. Por exemplo, voce pode ter um investimento substancial em controles Windows Forms existentes, ou você pode ter um controle Windows Forms que fornece funcionalidade unica.

Este passo a passo mostra como hospedar um controle System.Windows.Forms.MaskedTextBox de Windows Forms uma página WPF utilizando código.

Para uma listagem de código completa das tarefas apresentadas neste passo a passo, veja Hospedagem de um Controlarar Windows Forms no Windows Presentation Foundation Exemplo.

Observação As caixas de diálogo e comandos de menu você vê podem diferir daqueles descritos na ajuda dependendo de suas configurações ativas ou versão. Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu. Para obter mais informações, consulte Configurações do Visual Studio.

Pré-requisitos

Para completar este passo a passo, são necessários os seguintes componentes:

  • Visual Studio 2008.

Hospedando o Controle do Windows Forms

Para inicializar o controle MaskedTextBox

  1. Crie um projeto de aplicação WPF chamado HostingWfInWpf.

  2. No Solution Explorer, acrescente uma referência ao assembly WindowsFormsIntegration, que é chamado WindowsFormsIntegration.dll.

  3. No Solution Explorer, acrescente uma referência ao assembly Windows Forms, que é chamado System.Windows.Forms.dll.

  4. Abra Window1.xaml no WPF Designer.

  5. Substitua o XAML gerado automaticamento no Window1.xaml pelo XAML a seguir.

    <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. No editor de código, abra Window1.xaml.cs.

  7. Substitua o código em Window1.xaml.cs pelo seguinte:

    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);
            }
        }
    }
    

Consulte também

Tarefas

Demonstra Passo a passo: Hospedagem de um controle de formulários do Windows no Windows Presentation Foundation por meio de XAML

Hospedagem de um Controlarar Windows Forms no Windows Presentation Foundation Exemplo

Conceitos

Demonstra Passo a passo: Hospedagem de um controle composto do Windows Forms no Windows Presentation Foundation

Demonstra Passo a passo: Hospedagem de um controle Windows Presentation Foundation no Windows Forms

Controles de Formulários do Windows e Controles WPF Equivalentes

Referência

ElementHost

WindowsFormsHost

Outros recursos

WPF Designer

Tópicos de "Como Fazer" migração e interoperabilidade