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

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

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

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

Необходимые компоненты

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

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

Чтобы разместить элемент управления MaskedTextBox, выполните следующие действия.

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

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

    • WindowsFormsIntegration

    • System.Windows.Forms.

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

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

    <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 для сборки и запуска приложения.

См. также