Tutorial: Hospedar un control de formularios Windows Forms en Windows Presentation Foundation
Actualización: noviembre 2007
WPF proporciona numerosos controles con un completo conjunto de características. Sin embargo, en ocasiones puede que prefiera utilizar controles de formularios Windows Forms en páginas de WPF. Por ejemplo, es posible que disponga de un importante parque de controles de formularios Windows Forms existentes, o un control de formularios Windows Forms que proporcione una funcionalidad única.
En este tutorial se muestra cómo hospedar un control System.Windows.Forms.MaskedTextBox de formularios Windows Forms en una página de WPF mediante código.
Para ver una lista de código completa de las tareas mostradas en este tutorial, consulte Ejemplo Hosting a Windows Forms Control in Windows Presentation Foundation.
Nota Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
- Visual Studio 2008.
Hospedar un control de Windows Forms
Para hospedar el control MaskedTextBox
Cree un proyecto de aplicación de WPF denominado HostingWfInWpf.
En el Explorador de soluciones, agregue una referencia al ensamblado WindowsFormsIntegration, denominado WindowsFormsIntegration.dll.
En el Explorador de soluciones, agregue una referencia al ensamblado formularios Windows Forms, denominado System.Windows.Forms.dll.
Abra Window1.xaml en WPF Designer.
Reemplace el XAML generado automáticamente en Windows1.xaml por el XAML siguiente.
<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>
En el Editor de código, abra Window1.xaml.cs.
Reemplace el código de Window1.xaml.cs por el código siguiente.
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); } } }
Vea también
Tareas
Ejemplo Hosting a Windows Forms Control in Windows Presentation Foundation
Conceptos
Tutorial: Hospedar un control de Windows Presentation Foundation en formularios Windows Forms
Controles de formularios Windows Forms y controles equivalentes de WPF