演练:在 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 控件
创建名为 HostingWfInWpf 的 WPF 应用程序项目。
添加对下列程序集的引用。
WindowsFormsIntegration
System.Windows.Forms
在 WPF 设计器中打开 MainWindow.xaml。
将 Grid 元素命名为 grid1。
<Grid Name="grid1"> </Grid>
在设计视图或 XAML 视图中,选择 Window 元素。
在“属性”窗口中,单击**“事件”**选项卡。
双击 Loaded 事件。
插入下面的代码以处理 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); }
在文件顶部,添加以下 Imports 或 using 语句。
Imports System.Windows.Forms
using System.Windows.Forms;
按 F5 生成并运行该应用程序。
请参见
任务
演练:使用 XAML 在 WPF 中承载 Windows 窗体控件
参考
概念
其他资源
Hosting a Windows Forms Control in WPF Sample
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2010 年 8 月 |
针对 Visual Studio 2010 进行了更新。 |
客户反馈 |