Поделиться через


Пошаговое руководство. Размещение элемента управления Windows Forms в WPF

WPF предоставляет множество элементов управления с расширенным набором функций. Однако иногда может потребоваться использовать элементы управления Windows Forms на страницах WPF. Например, у вас могут быть значительные инвестиции в существующие элементы управления Windows Forms, или у вас может быть элемент управления Windows Forms, предоставляющий уникальные функциональные возможности.

В этом пошаговом руководстве показано, как разместить элемент управления Windows Forms System.Windows.Forms.MaskedTextBox на странице WPF с помощью кода.

Полный список кода задач, показанных в этом пошаговом руководстве, см. в разделе "Размещение элемента управления Windows Forms в примере WPF".

Предпосылки

Для выполнения этого пошагового руководства вам потребуется Visual Studio.

Размещение элемента управления Windows Forms

Для размещения элемента управления MaskedTextBox

  1. Создайте проект приложения WPF с именем HostingWfInWpf.

  2. Добавьте ссылки на следующие сборки.

    • WindowsFormsIntegration (Интеграция Windows Forms)

    • System.Windows.Forms

  3. Откройте MainWindow.xaml в конструкторе WPF.

  4. Присвойте элементу Gridgrid1имя.

    <Grid Name="grid1">
        
    </Grid>
    
  5. В представлении конструирования или XAML выделите элемент Window.

  6. В окне "Свойства" щелкните вкладку "События".

  7. Дважды щелкните событие Loaded.

  8. Вставьте следующий код для обработки 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. В верхней части файла добавьте следующую Imports или using инструкцию.

    using System.Windows.Forms;
    
    Imports System.Windows.Forms
    
  10. Нажмите клавишу F5, чтобы создать и запустить приложение.

См. также