文档章节

【转】WPF中添加winform 窗体

o
 osc_wws45aot
发布于 2019/08/21 13:57
字数 554
阅读 16
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1、WPF 中添加winform 窗体 - 不是我的博客 - CSDN博客.html(https://blog.csdn.net/u011854789/article/details/54668859

 1.1、

  ZC:假设 WPF工程为 A工程,WinForm工程为 B工程。

  1. 将原来的winform程序中的MainForm类的构造函数权限改成 public
  2. 项目输出由 应用程序改成 类库 (假设mainform.dll)    ZC:在 B工程-->项目--> 右键属性-->标签页"应用程序"中修改
  3. 添加必要的引用      ZC:A工程 中添加引用
  System.Windows.Forms
  WindowsFormsIntegration
  以及mainform.dll
  1. 在wpf的xaml中添加一个windowsformhost,假设name = wfh;
  2. 在MainWindow()中添加新建一个待添加的窗体类(比如 MainForm)对象

           MainForm mainform = new MainForm();
           wfh.Child = mainform;

  1. 捕获到异常,子空间不能为顶级窗体,故把MainForm的TopLevel属性设为false即可;
  2. 最后运行程序,OK!

2、

3、

4、

5、

6、wpf怎么使用WindowsFormsHost(即winform控件) - qq_31971935的博客 - CSDN博客.html(https://blog.csdn.net/qq_31971935/article/details/72819736

使用方法: 
  1、首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration; 
  2、添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件; 
  3、将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码:

<Grid>
  <WindowsFormsHost Height="100" HorizontalAlignment="Left" Margin="36,29,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="200" />
</Grid>

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

  xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
  xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

  5、这样就可以在WindowsFormsHost下放置需要的Windows Form控件了。 

 <WindowsFormsHost Height="196" HorizontalAlignment="Left" Margin="104,65,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="286" >
  <WinFormControls:Button Text="WinformButton" Width="150"/>
 </WindowsFormsHost>

 

 

7、

 ZC:按照上面的做了 重新生成工程,还有报错:

  

 7.1、工程结构是这样的:(WPF_FFME 是主工程,DemoRealChart是 加入进来的另一个工程,WPF_FFME 要显示 DemoRealChart里面的 WinForm)

  

 7.2、我用 EditPlus搜索 "RealChart.cs",发现 "E:\WPF_FFME\WPF_FFME\WPF_FFME.csproj"里面的这一行数据比较靠谱:

   

 ZC:我修改它们,原来的是 上面那样,修改成这样:

<Compile Include="..\DemoRealChart\RealChart.cs" />
    <Compile Include="..\DemoRealChart\RealChart.Designer.cs" />

  然后 VS2017会重新加载,然后就变成这样了:

  

  7.3、<EmbeddedResource Include="RealChart.resx" />  使用 同样的操作:

  <EmbeddedResource Include="..\DemoRealChart\RealChart.resx" />

 

 

 

8、

9、

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
xBIM 实战04 在WinForm窗体中实现IFC模型的加载与浏览

系列目录 【已更新最新开发文章,点击查看详细】   WPF底层使用 DirectX 进行图形渲染。DirectX 能理解可由显卡直接渲染的高层元素,如纹理和渐变,所以 DirectX 效率更高。而 GDI/GDI+不理...

osc_3xmkn220
04/16
10
0
C#winform中调用wpf

原文:C#winform中调用wpf 在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件) 1.新建一个winform项目; 2.在解决方案上新建一个wpf项目; 如图: 如果有如下错误,就在winform...

osc_1fuqrqut
2019/04/23
19
0
在Winform窗体中使用WPF控件(附源码)

原文:在Winform窗体中使用WPF控件(附源码) 今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件。原有是我在百度上搜索相关信息无果,遂干脆动手自己实现。 WP...

osc_9z5br62t
2018/05/29
8
0
在winform中使用wpf窗体

在winform项目,通过引用dll可以添加WPF窗体,如下 但是如果直接在winform的项目中添加wpf窗体还是有部分问题,图片的显示。 直接在XAML界面中用Source属性设置图片会出现错误。必须通过后台...

osc_5i4e20is
2018/06/21
5
0
【Win32 API】利用SendMessage实现winform与wpf之间的消息传递

原文:【Win32 API】利用SendMessage实现winform与wpf之间的消息传递 引言 有一次心血来潮,突然想研究一下进程间的通信,能够实现消息传递的方法有几种,其中win32api中的sendmessage就是当中...

osc_u949m2a6
2019/04/18
2
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
今天
65
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
11
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
今天
26
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
今天
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部