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


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

Обновлен: Ноябрь 2007

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

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

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

Примечание   Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска. Чтобы изменить параметры, выберите в меню Сервис команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Для выполнения инструкций данного пошагового руководства необходимы следующие компоненты.

  • Visual Studio 2008.

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

Чтобы разместить элемент управления MaskedTextBox

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

  2. В обозревателе решений добавьте ссылку на сборку WindowsFormsIntegration с именем WindowsFormsIntegration.dll.

  3. В обозревателе решений добавьте ссылку на сборку Windows Forms с именем System.Windows.Forms.dll.

  4. Откройте файл Window1.xaml в конструкторе WPF (конструктор).

  5. Замените автоматически созданный XAML в Window1.xaml следующим кодом XAML.

    <Window x:Class="Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="HostingWfInWpf" Height="300" Width="300"
        Loaded="WindowLoaded"
        >
      <Grid Name="grid1">
    
        </Grid>
    </Window>
    
    <Window x:Class="HostingWfInWpf.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="HostingWfInWpf"
        Loaded="WindowLoaded"
        >
        <Grid Name="grid1">
    
        </Grid>
    </Window>
    
  6. В редакторе кода откройте файл Window1.xaml.cs.

  7. Замените код в Window1.xaml.cs следующим кодом.

    Imports System
    Imports System.Windows
    Imports System.Windows.Controls
    Imports System.Windows.Data
    Imports System.Windows.Documents
    Imports System.Windows.Media
    Imports System.Windows.Media.Imaging
    Imports System.Windows.Shapes
    
    Imports System.Windows.Forms
    
    ' Interaction logic for Window1.xaml
    Partial Public Class Window1
        Inherits Window
    
        Public Sub New()
            InitializeComponent()
        End Sub
    
        Private Sub WindowLoaded(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 'WindowLoaded
    
    End Class
    
    using System;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Media;
    using System.Windows.Shapes;
    
    using System.Windows.Forms;
    
    namespace HostingWfInWpf
    {   
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
            }
    
            private void WindowLoaded(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);
            }
        }
    }
    

См. также

Задачи

Пошаговое руководство. Размещение элементов управления Windows Forms в приложении Windows Presentation Foundation с помощью языка XAML

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

Основные понятия

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

Обзор: размещение элементов управления Windows Presentation Foundation в приложении Windows Forms

Элементы управления Windows Forms и эквивалентные элементы управления WPF

Ссылки

ElementHost

WindowsFormsHost

Другие ресурсы

Конструктор WPF

Разделы руководства по миграции и взаимодействию