WPF使用Winform自定义控件

在WPF的用户控件中使用Winfrom自定义控件的过程:

1、添加引用

WindowsFormsIntegration.dll

System.Windows.Forms.dll

2、在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容:

 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
 xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

如下图所示:

3、 在WPF的容器控件内如StackPanel内首先要添加WinForm控件的宿主容器,用于衔接WPF和WinForm,

对应XAML如下:

说明:<wfi:WindowsFormsHost></wfi:WindowsFormsHost>即为WinForm控件的宿主容器,每一个宿主容器只能放一个WinForm控件,如下例,放了三个WinForm控件,分别放在三个宿主容器里面,该容器可以设置属性来调整大小和布局

注意:如上我添加的WinForm控件如在指定其Name时,必须加前缀x:,如添加Lable时<wf:Label x:Name="wpfLabel" Text="我是WPF中的WinForm控件” />,否则后台代码无法访问。

<local:UserControl1 Name="Header" Width="319" Height="30"></local:UserControl1>这个为Winform自定义控件。


<StackPanel>
  <wfi:WindowsFormsHost>
    <local:UserControl1 Name="Header" Width="319" Height="30"></local:UserControl1>
  </wfi:WindowsFormsHost>    
  <wfi:WindowsFormsHost>  
    <wf:Label x:Name="wfLabel" Text="winForm控件在此" />     
  </wfi:WindowsFormsHost>
</StackPanel>

4、 如果要在WPF后台代码中访问上面的Lable,可直接像在WinForm中使用一样。

ok,今天的分享就到这里了,有疑问欢迎指导。

原文地址:https://www.cnblogs.com/guhuazhen/p/12360003.html

时间: 2024-11-05 16:31:16

WPF使用Winform自定义控件的相关文章

编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面的限制并不是很严格,所以像下面这样的代码,在WinForm中大部分情况下还能运行(本建议后面会详细解释为什么会出现这种现象): private void buttonStartAsync_Click(object sender, EventArgs e) { Task t = new Task(()

WPF与WinForm的抉择

微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认.几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸软件开发领域还有不小的距离.不过,刚转到WinForm上一两年的开发人员们都很困惑,WinForm究竟还有没有未来.微软只是模糊地说短期内还是WinForm,长期是WPF.想想“维纳斯”,“TabletPC”,“Hailstorm”,“IE Channels”等等就知道这位老大的话不能全信.到底何去

winform 自定义控件:半透明Loading控件

winform  自定义控件:半透明Loading控件 by wgscd date:2015-05-05 效果: using System;using System.Drawing;using System.Windows.Forms;using System.ComponentModel;using System.Threading; namespace wgscd{ /// <summary> /// 自定义控件:半透明控件 /// </summary> [ToolboxBit

Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfrom控件的问题,我们知道Wpf可以通过使用WindowsFormsHost容器调用Winform控件,但是在一些场合需要将Wpf元素显示在Winform控件的上层,此时就会出现Wpf元素被Winform控件遮盖的问题. 一.场景再现 接到公司命令,在时间紧迫的情况下,需要将原来的Winform程序(

GDI、DirectX、WPF、Winform等绘图相关关系梳理

绘图引擎方面,Windows下常用的为GDI.GDI+.DirectX.OpenGL等引擎,而Winform.MFC.WPF.Qt等则是用来实现对这些引擎调用的工具,属于更上层的范围,这几个绘图引擎中,前三者都是微软自己的东西,因此如果用C#来写的话用这几个引擎相对就会方便些. WPF采用的是DirectX作为底层绘图引擎,Winform和MFC则都采用GDI+,因此,Winform和MFC基本的绘图效率应该是接近的. DirectX是可以实现硬件加速的,如果PC上有GPU的话,那么WPF的图形

WPF与WinForm开发有什么区别?

转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的.我觉得WPF相比于WinForm有下面的一些较好的特性: 解决Window Handle问题   在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等.而每个控件或Grid cell都是一个小窗口,会使用一个Window

WPF与Winform的选择

最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs.平时如自己写一些工具,小应用都是用winform就足够.但是界面总是很难看,据了解WPF在这一方面会强一些.因为之前对WPF并不熟悉,先花了点时间了解一下,和Winform做了一下对比.以下大概的整理,未做详细整理. wpf是啥技术? DHTML就是WPF的直系亲属.WPF里的大量核心概念和结构,如属性引擎.事件模型等,都是继承自 DHTML,最大的一个不同是外观和控件逻辑的分离.WPF应用和DHTML应用(HTA

(二十七)c#Winform自定义控件-多输入窗体

前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492  准备工作 这个窗体继承子基类窗体FrmWithOKCancel1,如果你对FrmWithOKCancel1还不了解,请移步 (二十五)c#Winform自定义控件-有确定取消的窗体(一) 查看 开始 添

(四十一)c#Winform自定义控件-进度条

前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492  NuGet Install-Package HZH_Controls 目录 https://www.cnblogs.com/bfyx/p/11364884.html 准备工作 前面写过一个进度条,但是并