Walkthrough: Hosting a Windows Forms Control in WPF
WPF provides many controls with a rich feature set. However, you may sometimes want to use Windows Forms controls on your WPF pages. For example, you may have a substantial investment in existing Windows Forms controls, or you may have a Windows Forms control that provides unique functionality.
This walkthrough shows you how to host a Windows Forms System.Windows.Forms.MaskedTextBox control on a WPF page by using code.
For a complete code listing of the tasks shown in this walkthrough, see Hosting a Windows Forms Control in WPF Sample.
Prerequisites
You need Visual Studio to complete this walkthrough.
Hosting the Windows Forms Control
To host the MaskedTextBox control
Create a WPF Application project named
HostingWfInWpf
.Add references to the following assemblies.
WindowsFormsIntegration
System.Windows.Forms
Open MainWindow.xaml in the WPF Designer.
Name the Grid element
grid1
.<Grid Name="grid1"> </Grid>
In Design view or XAML view, select the Window element.
In the Properties window, click the Events tab.
Double-click the Loaded event.
Insert the following code to handle the Loaded event.
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
At the top of the file, add the following
Imports
orusing
statement.using System.Windows.Forms;
Imports System.Windows.Forms
Press F5 to build and run the application.
See also
- ElementHost
- WindowsFormsHost
- Design XAML in Visual Studio
- Walkthrough: Hosting a Windows Forms Control in WPF by Using XAML
- Walkthrough: Hosting a Windows Forms Composite Control in WPF
- Walkthrough: Hosting a WPF Composite Control in Windows Forms
- Windows Forms Controls and Equivalent WPF Controls
- Hosting a Windows Forms Control in WPF Sample
.NET Desktop feedback