如何在WPF中使用Windows Form控件

  • 格式:doc
  • 大小:89.50 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何在WPF中使用Windows Form控件

由于WPF中没有没有DateTimePicker控件,网上有人写的又不太好用,而在WinForm中有此控件,因此想到了从.net中借用此控件。

首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration。组件不好找,排一下序就比较容易了。

添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件了。这个控件是我们添加Windows Form控件的基础。跟别的其他的控件一样,它也是可控的,可以自定义它在窗口中的位置、控件大小颜色等属性。

将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码:

然后,需要在xmal的开始处添加两行代码

xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration"

xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms"

这样就可以在WindowsFormsHost下放置需要的Windows Form控件了,比如

这是最简单的情况,就是添加了一个button。这时一般会报一个错误:“未找到类型“WinFormControls:Button”。请确保不缺少程序集引用,并且已生成所有引用的程序集”。这都是因为没有生成项目,有些程序集只能在生成时加上,而现在没有加上,解决办法就是在菜单栏点击“生成”->“重新生成解决方案”,就OK了。运行以后会发现整个WindowsFormsHost上就放置了一个硕大的button……如果需要有布局的可以在WindowsFormsHost下放置Panel等布局控件。

最后附上整个xmal代码

xmlns="/winfx/2006/xaml/presentation"

xmlns:x="/winfx/2006/xaml"

xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration"

xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms"

Title="MainWindow"Height="350"Width="525">

Margin="104,65,0,0"Name="windowsFormsHost1"VerticalAlignment="Top"

Width="286">

以下是MSDN中演练:在WPF 应用程序中承载Windows 窗体控件帮助,以供大家参考/zh-SG/library/bb514662(v=vs.100)