ComponentOne使用技巧——从Winform穿越到W
admin
2023-01-23 08:42:35
0

概述

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

本文主要用 FlexReport .NET报表控件,作为介质进行两个平台的链接

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.相关引用

ComponentOne使用技巧——从Winform穿越到W

注意:这里面的引用是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

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

示例×××

本文中的示例源码,请点击此处下载

关于葡萄城

赋能开发者!葡萄城公司成立于 1980 年,是全球领先的集开发工具、商业智能解决方案、管理系统设计工具于一身的软件和服务提供商。西安葡萄城是其在中国的分支机构,面向全球市场提供软件研发服务,并为中国企业的信息化提供国际先进的开发工具、软件和研发咨询服务。葡萄城的控件和软件产品在国内外屡获殊荣,在全球被数十万家企业、学校和政府机构广泛应用。


相关内容

热门资讯

【第一资讯】“老友内蒙古麻将.... 【第一资讯】“老友内蒙古麻将.怎么开挂?”原来真的有挂您好,老友内蒙古麻将这个游戏其实有挂的,确实是...
今日重大消息“微乐捉鸡麻将.真... 有 亲,根据资深记者爆料微乐捉鸡麻将是可以开挂的,确实有挂(咨询软件无需...
重磅消息“丫丫衡阳字牌.开挂器... 重磅消息“丫丫衡阳字牌.开挂器?”外卦神器下载您好,丫丫衡阳字牌这个游戏其实有挂的,确实是有挂的,需...
【第一资讯】“陕西三代一.是不... 【第一资讯】“陕西三代一.是不是有挂?”详细开挂教程您好,陕西三代一这个游戏其实有挂的,确实是有挂的...
重磅消息“微信十三水.真的有挂... 您好:微信十三水这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
我来教教您“掌中宝麻将.有没有... 有 亲,根据资深记者爆料掌中宝麻将是可以开挂的,确实有挂(咨询软件无需打...
【今日要闻】“微乐龙江麻将.到... 网上科普关于“微乐龙江麻将有没有挂”话题很是火热,小编也是针对微乐龙江麻将作*弊开挂的方法以及开挂对...
最新引进“微乐安庆麻将.开挂器... 家人们!今天小编来为大家解答微乐安庆麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
重磅消息“中至江西麻将.真的有... 有 亲,根据资深记者爆料中至江西麻将是可以开挂的,确实有挂(咨询软件无需...
终于了解“天天十三水.是不是有... 家人们!今天小编来为大家解答天天十三水透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...