Compartir a través de


Tutorial: Alojamiento de un control Windows Forms en WPF

WPF proporciona muchos controles con un conjunto de características enriquecido. Sin embargo, es posible que a veces quiera usar controles de Windows Forms en las páginas de WPF. Por ejemplo, puede tener una inversión sustancial en los controles existentes de Windows Forms o puede tener un control de Windows Forms que proporcione 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 que se muestran en este tutorial, vea Hospedaje de un control de Formularios Windows Forms en el ejemplo de WPF.

Prerrequisitos

Necesita Visual Studio para completar este tutorial.

Alojar el control de Windows Forms

Para alojar el control MaskedTextBox

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

  2. Agregue referencias a los ensamblados siguientes.

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. Abra MainWindow.xaml en WPF Designer.

  4. Asigne al elemento el Grid nombre grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  5. En la vista Diseño o 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 Loaded evento.

    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 siguiente declaración Imports o using.

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

Consulte también