WPF与Winform互操作:彼此窗体互相调用

WPF与Winform互操作[1]Winform调用WPF窗体


创建Winform应用程序项目。

打开VS2013,文件->新建->项目...,新建一个Windows窗体应用程序项目,项目名称为“Winform调用WPF窗体”。

为Form1添加一个按钮,用于打开WPF窗体。

image.png

image.png

创建待调用的WPF窗体。

为解决方案添加一个WPF应用程序项目,右键解决方案,添加->新建项目,创建一个WPF应用程序项目。

在WPF应用程序界面上拖放一个TextBox(测试键盘输入)和Button按钮(调用Winform窗体,下篇经验介绍)。

image.png

image.png

image.png

为项目添加WPF相关引用。

PresentationCore

PresentationFramework

System.Xaml

WindowsBase

WindowsFormsIntegration

以及待调用“WPF窗体”项目

image.png

书写按钮事件,调用WPF窗体。

如果不写ElementHost.EnableModelessKeyboardInterop(wpfwindow),调出WPF窗体的键盘输入不起作用。

另外,使用WindowInteropHelper类为WPF设置owner。

image.png

查看效果。

d009b3de9c82d158935f2b49820a19d8bd3e426c.gif


WPF调用Winform窗体


  1. 创建WPF应用程序项目。

    步骤为上篇经验 Winform调用WPF窗体 中步骤2所创建的项目,这里就不在详细描述了。

  2. 2

    创建一个Winform窗体应用程序。

    (为了避免项目循环引用,这里新建一个Winform程序项目)

    为解决方案添加一个Windows窗体应用程序项目,右键解决方案,添加->新建项目,创建一个Windows窗体应用程序项目(命名为“Winform窗体”)。

  3. 3

    为WPF应用程序项目添加Winform相关引用。

    System.Windows.Forms

    添加步骤2的项目引用:Winform窗体

image.png

书写按钮事件,调用Winform窗体。

这里,使用WindowInteropHelper类来协助WPF与Win32的互操作。

WindowWrapper根据WPF窗体的WindowInteropHelper实例的Handle获得IWin32Window对象,用于Winform窗体Show调用时作为Winform窗体的Owner。

需要说明的是:这里虽指定了Winform窗体的Owner,但是CenterParent是针对于Mdi窗体的,这里将不起作用。

image.png

查看效果

d009b3de9c82d158935f2b49820a19d8bd3e426c.gif


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864