Procédure pas à pas : hébergement d'un contrôle Windows Forms dans WPF

WPF fournit de nombreux contrôles avec un ensemble de fonctionnalités riche. Toutefois, vous pouvez parfois utiliser des contrôles Windows Forms sur vos pages WPF. Par exemple, vous pouvez avoir un investissement important dans les contrôles Windows Forms existants, ou vous pouvez avoir un contrôle Windows Forms qui fournit des fonctionnalités uniques.

Cette procédure pas à pas vous montre comment héberger un contrôle Windows Forms System.Windows.Forms.MaskedTextBox sur une page WPF à l’aide du code.

Pour obtenir le listing de code complet des tâches illustrées dans cette procédure pas à pas, consultez Hébergement d’un contrôle Windows Forms dans WPF, exemple.

Prérequis

Cette procédure pas à pas nécessite Visual Studio.

Hébergement d’un contrôle Windows Forms

Pour héberger le contrôle MaskedTextBox

  1. Créez un projet d’application WPF nommé HostingWfInWpf.

  2. Ajoutez les références aux assemblys suivants.

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. Ouvrez MainWindow.xaml dans le concepteur WPF.

  4. Nommez l’élément Gridgrid1.

    <Grid Name="grid1">
        
    </Grid>
    
  5. En mode Création ou en mode XAML, sélectionnez l’élément Window .

  6. Dans la fenêtre Propriétés, cliquez sur l’onglet Événements.

  7. Double-cliquez sur l’événement Loaded .

  8. Insérez le code suivant pour gérer l’événement 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. En haut du fichier, ajoutez l’instruction suivante Imports ou using l’instruction.

    using System.Windows.Forms;
    
    Imports System.Windows.Forms
    
  10. Appuyez sur F5 pour générer et exécuter l’application.

Voir aussi