演练:在 WPF 中承载 Windows 窗体控件

更新:2010 年 8 月

WPF 提供了许多具有丰富功能集的控件。 但是,您有时可能希望在 WPF 页上使用 Windows Forms控件。 例如,您可能需要对现有 Windows Forms控件进行大量投资,或者您有一个提供唯一功能的 Windows Forms控件。

本演练向您演示如何使用代码在 WPF 页上承载 Windows Forms System.Windows.Forms.MaskedTextBox 控件。

有关本演练中所演示任务的完整代码清单,请参见 Hosting a Windows Forms Control in WPF Sample(在 WPF 中承载 Windows 窗体控件)。

系统必备

您需要以下组件来完成本演练:

  • Visual Studio 2010.

承载 Windows 窗体控件

承载 MaskedTextBox 控件

  1. 创建名为 HostingWfInWpf 的 WPF 应用程序项目。

  2. 添加对下列程序集的引用。

    • WindowsFormsIntegration

    • System.Windows.Forms

  3. 在 WPF 设计器中打开 MainWindow.xaml。

  4. Grid 元素命名为 grid1。

    <Grid Name="grid1">
    
    </Grid>
    
  5. 在设计视图或 XAML 视图中,选择 Window 元素。

  6. 在“属性”窗口中,单击**“事件”**选项卡。

  7. 双击 Loaded 事件。

  8. 插入下面的代码以处理 Loaded 事件。

    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
    
    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);
    }
    
  9. 在文件顶部,添加以下 Imports 或 using 语句。

    Imports System.Windows.Forms
    
    using System.Windows.Forms;
    
  10. 按 F5 生成并运行该应用程序。

请参见

任务

演练:使用 XAML 在 WPF 中承载 Windows 窗体控件

参考

ElementHost

WindowsFormsHost

概念

演练:在 WPF 中承载 Windows 窗体复合控件

演练:在 Windows 窗体中承载 WPF 复合控件

Windows 窗体控件和等效的 WPF 控件

其他资源

WPF 设计器

Hosting a Windows Forms Control in WPF Sample

修订记录

日期

修订记录

原因

2010 年 8 月

针对 Visual Studio 2010 进行了更新。

客户反馈