Dela via


Guide: Att använda en Windows Forms-kontroll i WPF

WPF tillhandahåller många kontroller med en omfattande funktionsuppsättning. Men ibland kanske du vill använda Windows Forms-kontroller på dina WPF-sidor. Du kan till exempel ha en betydande investering i befintliga Windows Forms-kontroller, eller så kan du ha en Windows Forms-kontroll som ger unika funktioner.

Den här handledningen visar hur du kan vara värd för en Windows Forms System.Windows.Forms.MaskedTextBox-kontroll på en WPF-sida med hjälp av kod.

En fullständig kodlista över de uppgifter som visas i den här genomgången finns i Hosting a Windows Forms Control in WPF Sample.

Förutsättningar

Du behöver Visual Studio för att slutföra den här genomgången.

Vara värd för Windows Forms-kontrollen

För att vara värd för MaskedTextBox-kontrollen

  1. Skapa ett WPF-programprojekt med namnet HostingWfInWpf.

  2. Lägg till referenser till följande sammansättningar.

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. Öppna MainWindow.xaml i WPF Designer.

  4. Ge elementet Grid namnet grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  5. I designvyn eller XAML-vyn väljer du elementet Window.

  6. I fönstret Egenskaper klickar du på fliken Händelser.

  7. Dubbelklicka på händelsen Loaded.

  8. Infoga följande kod för att hantera händelsen 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. Lägg till följande Imports- eller using-instruktion överst i filen.

    using System.Windows.Forms;
    
    Imports System.Windows.Forms
    
  10. Tryck på F5 för att skapa och köra programmet.

Se även