Freigeben über


Exemplarische Vorgehensweise: Hosten eines Windows Forms-Steuerelements in Windows Presentation Foundation

Aktualisiert: November 2007

WPF stellt viele Steuerelemente mit einem umfangreichen Featuresatz bereit. Möglicherweise möchten Sie aber manchmal Windows Forms-Steuerelemente auf den WPF-Seiten verwenden. Beispielsweise könnte eine beträchtliche Investition in Windows Forms-Steuerelementen vorliegen, oder Sie verfügen über ein Windows Forms-Steuerelement, das eine einzigartige Funktionalität zur Verfügung stellt.

In dieser exemplarischen Vorgehensweise wird das Hosten eines Windows FormsSystem.Windows.Forms.MaskedTextBox-Steuerelements auf einer WPF-Seite mithilfe von Code beschrieben.

Eine vollständige Codeauflistung der Aufgaben in dieser exemplarischen Vorgehensweise finden Sie unter Beispiel zum Hosten eines Windows Forms-Steuerelements in Windows Presentation Foundation.

Hinweis: Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

  • Visual Studio 2008.

Hosten des Windows Forms-Steuerelements

So hosten Sie das MaskedTextBox-Steuerelement

  1. Erstellen Sie ein WPF-Anwendungsprojekt mit dem Namen HostingWfInWpf.

  2. Fügen Sie im Projektmappen-Explorer einen Verweis auf die WindowsFormsIntegration-Assembly mit dem Namen WindowsFormsIntegration.dll hinzu.

  3. Fügen Sie im Projektmappen-Explorer einen Verweis auf die Windows Forms-Assembly mit dem Namen System.Windows.Forms.dll hinzu.

  4. Öffnen Sie im WPF-Designer die Datei Window1.xaml.

  5. Ersetzen Sie in der Datei Window1.xaml das automatisch generierte XAML durch das folgende 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. Öffnen Sie Window1.xaml.cs im Code-Editor.

  7. Ersetzen Sie den Code in Window1.xaml.cs durch den folgenden Code.

    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);
            }
        }
    }
    

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Hosten eines Windows Forms-Steuerelements in Windows Presentation Foundation mithilfe von XAML

Beispiel zum Hosten eines Windows Forms-Steuerelements in Windows Presentation Foundation

Konzepte

Exemplarische Vorgehensweise: Hosten eines zusammengesetzten Windows Forms-Steuerelements in Windows Presentation Foundation

Exemplarische Vorgehensweise: Hosten eines Windows Presentation Foundation-Steuerelements in Windows Forms

Windows Forms-Steuerelemente und äquivalente WPF-Steuerelemente

Referenz

ElementHost

WindowsFormsHost

Weitere Ressourcen

WPF-Designer

Gewusst-wie-Themen zu Migration und Interoperabilität