zoukankan      html  css  js  c++  java
  • WPF窗体中嵌入/使用WinForm类/控件(基于.NET Core)

    如题,WPF中嵌入WinForm的做法,网络上已经很多示例,都是基于.NET XXX版的。

    今天King様在尝试WPF(基于.NET Core 3.1)中加入Windows.Forms.ColorDialog的时候,走了点弯路。

    需求:

    在WPF中,实现调用颜色选择框的效果。

    尝试1:

    参考网上其他人的做法(基于.NET XXX),加入了以下引用。

    发现编译不通过,VS提示一堆红线,代码很不舒服的样子。

    同时,WPF用的System.Windows.XXX命名空间下的控件,而WinForm用的是System.Windows.Forms.XXX下的控件。

    很多控件名冲突了,要指定具体使用的命名空间。

    于是乎,下了一个结论:需求嵌入的Windows.Forms.ColorDialog控件,单独放在一个pj里可好?

    尝试2:

    新建一个Winform项目(基于.Net 4.7.2)。

    默认Form上,加一个ColorDialog,Form公开一个Color出去,等着wpf调用的时候用。

    然后,wpf这边,加上WindowsFormsIntegration.dll和System.Windows.Form.dll引用,

    XAML里声明命名空间:

    xmlns:wfh="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
    xmlns:cdf ="clr-namespace:YMSL.CS4.FMS.FA.ColorDialog;assembly=ColorDialog"

     再指定WindowsFormsHost

    <wfh:WindowsFormsHost Grid.Row="0" Grid.Column="0" Name="WinFormHost1" Margin="0,0,0,0" >
    <cdf:ColorChooserForm TopLevel="False" x:Name="colorChooserForm" Margin="0,0,0,0" FormClosed="colorChooserForm_FormClosed"></cdf:ColorChooserForm>
    </wfh:WindowsFormsHost >

    cs文件里,colorChooserForm_FormClosed实现,取得Winform公开返回出来的Color。

    结果,还是有尝试1相同问题。

    于是乎,又下了一个结论:难道是框架不一致?Winform项目,.NET Core 3.1支持吗?

    尝试3:

    上述Winform项目,改成基于基于.NET Core 3.1。再试一把,成了。

    项目构成+核心代码:

    回头一望,既然,只是用Windows.Forms.ColorDialog,那duck不必摆在画面上(上图位置3),还要设置可见不可见之类的。

    那就不要WindowsFormsHost吧,全写在后台代码里(上图位置4)。

    又试一把,成了。

    回头再望,既然WinForm那边的控件不要,那上述Winform项目也用不上了吧。

    丢掉丢掉,全部丢掉。

    双试一把,error如下:

     于是乎,双下了一个结论:不使用Winform项目的控件,那Winform项目提供的功能就是这两个程序集了。

    System.Windows.Forms;
    System.Drawing.SolidBrush;

    那尝试1中的程序集怎么不行呢?

    尝试4:

     去(上图位置4)的定义里看一看!结果呼之欲出,.net core平台的项目,用.net XXX的DLL,看来是不行啊。

     

     手动加上上述引用,叒试一把,完美!

    以上。

  • 相关阅读:
    人生顿悟之博观而约取,厚积而薄发
    Android_Dialog介绍
    java算法:分治法
    软件开发高手须掌握的4大SQL精髓语句(综合篇)
    和菜鸟一起学linux总线驱动之smartcard传输协议
    和菜鸟一起学linux总线驱动之smartcard操作模式和协议与参数选择
    祝贺自己CSDN博客上的博文《软件开发高手须掌握的4大SQL精髓语句(一)》浏览量突破1000次
    《Android系统源代码情景分析》一书勘误
    java算法:递归算法
    html网马通用免杀
  • 原文地址:https://www.cnblogs.com/soulxj/p/14006461.html
Copyright © 2011-2022 走看看