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,看来是不行啊。

     

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

    以上。

  • 相关阅读:
    HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
    POJ1185 炮兵阵地 —— 状压DP
    BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
    TopCoder SRM420 Div1 RedIsGood —— 期望
    LightOJ
    LightOJ
    后缀数组小结
    URAL
    POJ3581 Sequence —— 后缀数组
    hdu 5269 ZYB loves Xor I
  • 原文地址:https://www.cnblogs.com/soulxj/p/14006461.html
Copyright © 2011-2022 走看看