Udostępnij za pośrednictwem


Przewodnik: osadzanie kontrolki Windows Forms w WPF

WPF udostępnia wiele kontrolek z bogatym zestawem funkcji. Jednak czasami może być konieczne użycie kontrolek Windows Forms na stronach WPF. Na przykład może istnieć znaczna inwestycja w istniejące kontrolki Windows Forms lub może istnieć kontrolka Windows Forms, która zapewnia unikatowe funkcje.

W tym przewodniku pokazano, jak hostować kontrolkę windows Forms System.Windows.Forms.MaskedTextBox na stronie WPF przy użyciu kodu.

Aby uzyskać pełną listę kodu zadań pokazanych w tym przewodniku, zobacz Hosting a Windows Forms Control in WPF Sample(Hostowanie kontrolki formularzy systemu Windows w przykładzie WPF).

Warunki wstępne

Aby ukończyć ten przewodnik, potrzebny jest program Visual Studio.

Hostowanie kontrolki Windows Forms

Aby hostować kontrolkę MaskedTextBox

  1. Utwórz projekt aplikacji WPF o nazwie HostingWfInWpf.

  2. Dodaj odwołania do następujących zestawów.

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. Otwórz plik MainWindow.xaml w projektancie WPF.

  4. Nadaj Grid elementowi nazwę grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  5. W widoku projektu lub widoku XAML wybierz element Window.

  6. W oknie Właściwości kliknij kartę Zdarzenia.

  7. Kliknij dwukrotnie zdarzenie Loaded.

  8. Wstaw następujący kod, aby obsłużyć zdarzenie 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. W górnej części pliku dodaj następującą instrukcję Imports lub using.

    using System.Windows.Forms;
    
    Imports System.Windows.Forms
    
  10. Naciśnij F5, aby skompilować i uruchomić aplikację.

Zobacz też