Wskazówki: hosting formantu 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).

Wymagania wstępne

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

Hostowanie kontrolki Formularze systemu Windows

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 Projektant WPF.

  4. Nadaj elementowi Gridgrid1nazwę .

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

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

  7. Loaded Kliknij dwukrotnie zdarzenie.

  8. Wstaw następujący kod, aby obsłużyć Loaded zdarzenie.

    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ą Imports instrukcję lub using .

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

Zobacz też