演练:在 Windows Presentation Foundation 中承载 Windows 窗体控件
更新:2007 年 11 月
WPF 提供了许多具有丰富功能集的控件。但是,您有时可能希望在 WPF 页上使用 Windows 窗体控件。例如,您可能需要对现有 Windows 窗体控件进行大量投资,或者您有一个提供唯一功能的 Windows 窗体控件。
本演练向您演示如何使用代码在 WPF 页上承载 Windows 窗体System.Windows.Forms.MaskedTextBox 控件。
有关本演练中演示的任务的完整代码清单,请参见在 Windows Presentation Foundation 中承载 Windows 窗体控件的示例。
注意 显示的对话框和菜单命令可能与“帮助”中所述的有所不同,具体取决于当前的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。
先决条件
您需要以下组件来完成本演练:
- Visual Studio 2008.
承载 Windows 窗体控件
承载 MaskedTextBox 控件
创建名为 HostingWfInWpf 的 WPF 应用程序项目。
在解决方案资源管理器中,添加一个对名为 WindowsFormsIntegration.dll 的 WindowsFormsIntegration 程序集的引用。
在解决方案资源管理器中,添加一个对名为 System.Windows.Forms.dll 的 Windows 窗体程序集的引用。
在 WPF 设计器中打开 Window1.xaml。
用以下 XAML 替换 Window1.xaml 中自动生成的 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>
在代码编辑器中打开 Window1.xaml.cs。
将 Window1.xaml.cs 中的代码替换为以下代码。
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); } } }
请参见
任务
演练:使用 XAML 在 Windows Presentation Foundation 中承载 Windows 窗体控件
在 Windows Presentation Foundation 中承载 Windows 窗体控件的示例
概念
演练:在 Windows Presentation Foundation 中承载 Windows 窗体复合控件
演练:在 Windows 窗体中承载 Windows Presentation Foundation 控件