博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET开发技巧——从Winform穿越到WPF
阅读量:6955 次
发布时间:2019-06-27

本文共 1841 字,大约阅读时间需要 6 分钟。

概述

WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform。微软已经架设了两个开发平台的之间的通信桥梁,目前为止二者相互转换使用已经相当成熟了,今天主要给大家讲讲如何在这两个平台下调用 ComponentOne 的控件。

本文主要用 ,作为介质进行两个平台的链接

Step 1

首先,我们还是把两个平台的基本通信通道搭建起来,很简单,网上有很多步骤,总结起来主要分三步:

  1. 添加两个引用:WindowsFormsIntegration.dll(负责整合WPF和Windows)、System.Windows.Forms.
  2. 在 XAML文件中添加两个引用(粗体部分):
< /Window>

解释一下,这段代码真正起作用的是这个引用WindowsFormsIntegration.dll,而这个引用System.Windows.Forms 指的是Winform里面的微软的原生态控件,所以在用到ComponentOne时,可以不引用它。

我们先看一个示例:通过微软原生态控件在WPF中使用Winform,代码如下:

WindowsFormsHost其实是Winform在WPF的容器,所以Winform的控件显示都要在这个容器里面。

Setp2

上面我们说了,我们以FlexReport为介质进行通信,那我们需要准备的几个小步骤:

  1. Winform下FlexReport的模板
  2. 相关引用

相关引用

注意:这里面的引用是Winform的引用。同样,我们需要在xmal中引用:

xmlns:cc11="clr-namespace:C1.Win.FlexViewer;assembly=C1.Win.FlexViewer.4"

在布局中添加可供报表预览的控件

Setp3

我们在后台加载报表

private C1FlexReport _report;    public Window1()    {        InitializeComponent();        _report = new C1FlexReport();        // load report definition from resources        Assembly asm = Assembly.GetExecutingAssembly();        using (Stream stream = asm.GetManifestResourceStream("WpfApp1.Resources.FlexCommonTasks.flxr"))            _report.Load(stream, "Chart2D");        // assign report to the preview pane        flexViewerPane.DocumentSource = null;        flexViewerPane.DocumentSource = _report;    }

注:切记,这里面的报表是Winform平台下的

到这一步,我们工作完成了一大半,还差最后一步点石成金的步骤。很多人以为在这就结束了,但是我们要考虑 ComponentOne License 授权的问题,如何把Winform 的授权在WPF下注册,其实很简单,因为 .NET 的license机制一样,我们只需用同样的方式去注册控件的license ,不过这里推荐手动注册,这很重要,因为一不小心,就会报lc.exe=-1的错误

这里我们都用到了

  • C1FlexViewerPane
  • C1FlexReport

所以我们在license文件中写如下注册信息

C1.Win.FlexReport.C1FlexReport, C1.Win.FlexReport.4 C1.Win.FlexViewer.C1FlexViewerPane, C1.Win.FlexViewer.4

至此,我们就大功告成了。

示例源码下载

本文中的示例源码,


图片描述

转载地址:http://aztil.baihongyu.com/

你可能感兴趣的文章
JBoss Jopr
查看>>
Android获取文件夹路径 /data/data/
查看>>
Robot Framework自动化测试(一)---第一个脚本
查看>>
菜鸟学SSH(十六)——Struts2内部是如何工作的
查看>>
去标签获取网页内容
查看>>
改动file header (測)
查看>>
微软职位内部推荐-Senior Speech TTS
查看>>
假如是你,你会怎么选择
查看>>
UVA - 10574 Counting Rectangles
查看>>
eclipse luna使用jdk1.8初始化
查看>>
6-11-N皇后问题-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
HDU3336-Count the string(KMP)
查看>>
vijos P1352 最大获利(最小割)
查看>>
SVN Server配置详解 及备份
查看>>
常用API接口签名验证参考
查看>>
MultipartEntityBuilder.addTextBody 中文乱码
查看>>
ASP.NET页面传值加号变空格解决办法
查看>>
Tarjan算法
查看>>
Linux中find常见用法示例
查看>>
DWZ中Tree树形菜单的treeCheck如何获取返回值解决方案
查看>>