Tutorial: Hospedar un control de formularios Windows Forms en WPF

WPF proporciona numerosos controles con un conjunto de características enriquecidas. Pero en ocasiones le interesará usar controles de Windows Forms en las páginas de WPF. Por ejemplo, tal vez haya realizado una inversión sustancial en controles de Windows Forms existentes o tenga un control de Windows Forms que ofrece una funcionalidad única.

En este tutorial se muestra cómo hospedar un control de Windows Forms System.Windows.Forms.MaskedTextBox en una página de WPF mediante código.

Para obtener una lista de código completa de las tareas mostradas en este tutorial, vea Hosting a Windows Forms Control in WPF Sample (Ejemplo de cómo hospedar un control de Windows Forms en WPF).

Requisitos previos

Necesita Visual Studio para completar este tutorial.

Hospedar el control de Windows Forms

Para hospedar el control MaskedTextBox

  1. Cree un proyecto de aplicación WPF denominado HostingWfInWpf.

  2. Agregue referencias a los ensamblados siguientes.

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. Abra MainWindow.xaml en WPF Designer.

  4. Asígnele al elemento Grid el nombre grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  5. En la vista de diseño o en la vista XAML, seleccione el elemento Window.

  6. En la ventana Propiedades, haga clic en la pestaña Eventos.

  7. Haga doble clic en el evento Loaded.

  8. Inserte el código siguiente para controlar el evento Loaded.

    private void Window_Loaded(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);
    }
    
    Private Sub Window_Loaded(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
    
  9. En la parte superior del archivo, agregue la instrucción Imports o using siguiente.

    using System.Windows.Forms;
    
    Imports System.Windows.Forms
    
  10. Presione F5 para compilar y ejecutar la aplicación.

Vea también