在wpf中如何实现动态调用一个用c#编写的dll?

在wpf中如何实现动态调用一个用c#编写的dll?dll是一个winform窗体。如何在wpf中调用?以wpf为主窗口

3个回答

按照我说的关键字google下或者看msdn。

不知道你说的动态调用是什么意思?是运行时加载么?那么用Assembly.LoadFrom加载dll,用Assemby.CreateInstance反射创建对象,然后用GetType得到类型,用GetMethod得到方法,最后Invoke调用。

qtxhshang
不告诉你嘎嘎 不是这个,是child=.但是不会通过
接近 4 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复不告诉你嘎嘎: this.controls.add(你的控件)
接近 4 年之前 回复
qtxhshang
不告诉你嘎嘎 这个方法试过了。我是得到实例后用wiinformhost那个加载到wpf窗口中,但是最后一步不知道怎么做
接近 4 年之前 回复

问题已解决
Assembly assembly = Assembly.LoadFrom(@"文件路径");
//Type name = assembly.GetType("AppUI.CompanyInformation.BaseForm");//获取DLL命名空间
string name = assembly.GetTypes()[0].ToString();//选择你需要的命名空间
try
{
System.Windows.Forms.Form obj = assembly.CreateInstance(name) as System.Windows.Forms.Form;//创建对象

// MessageBox.Show(obj.ToString());
//System.Windows.Forms.Form aa = obj as System.Windows.Forms.Form;
obj.TopLevel = false;
winform.Child = obj;//此处winform为xaml中的winformhost控件
//grid.Children = obj;
}
catch (Exception ex)
{

            throw ex.InnerException;
        }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
非常不错的C#动态调用DLL代码
一、新建一调用工程项目和一个要测试的类项目,首先设计好测试的类以及函数,然后编译生成对应的类名.DLL文件。然后复制到调用工程项目的BIN目录下。   二、在调用工程项目中新建一WINFORM窗体,工具箱中拉一个按钮到窗体,然后在按钮事件中写调用代码        //调用办法         private void button1_Click(object sender, EventA
C#动态调用外部程序集(该程序集在dll文件中)
先说一下我的情况,我将一个dll做为资源文件放到了程序中,程序运行时将其释放到指定的目录, 然后再调用该dll中的一个类的一个方法或设置该类的属性的值,这里我主要说的是如何设置外部dll类中 的属性的值,这方面的文章网上很少,我也是经过自己查阅资料,然后测试成功的。 ---------------------------------------------------------------
.NET简谈反射(动态调用)
原文出处:http://wangqingpei557.blog.51cto.com/1009349/606400 我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步。 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象的分层架构或者说是复杂的设计模式均是建立在这些基础之上的,比如我们要进
C#反射动态调用窗体,动态实例化窗体的方法
其实这个问题很简单只要我们使用一点点反射的原理就行了,
Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库
WPF中使用MFC动态链接库(dll)函数
MFC导出函数, 在头文件中声明如下:extern “C”_declspec(dllexport) void WINAPI fun();其中extern “C”表示作用域是全局的,编译和链接按照C语言方式。 WINAPI表示函数调用规则,WINAPI在windef.h这个头文件中定义 #define WINAPI__stdcall 常用的调用规则有__stdcall、__cdecl和__pa
自定义WPF控件,封装成DLL
打开VS2015 1.新建项目 在菜单栏——文件——新建——项目——选择 C#  类库项目(ClassLibrary)——确定 2.添加必要引用 在解决方案管理器里,“引用”上右键——添加引用——程序集(框架)——添加对System.Xaml的引用,注意在net framework 4.0以上版本才有这个程序集 3.添加自定义控件 在解决方案管理器里,项目上右键——添加新建项——用户控
C#反射动态调用dll中的方法,并返回结果
最近在看工厂开发模式,发现用到了反射,之前只听说过也没怎么用过;所以花了点时间重新温习了一遍; 反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果;当然也可以给该方法传递参数   namespace assembly_name { public class assembly_class { public
C#动态调用非托管DLL
尝试着在C#下调用以前Delphi写的一些DLL,基本实现动态调用,传入回调函数,及调用带结构数组指针作为参数的函数.     虽然DllImport可以方便的静态调用DLL的函数,但在.net2.0中新增加了一个Marshal.GetDelegateForFunctionPointer 方法,可以将非托管函数指针转换为委托。 有了这个方法就可以用三个Windows API函数即:Loadli
C#动态调用DLL中的函数
一般使用方法 [System.Runtime.InteropServices.DllImport("E:\\Project\\DLL\\XXX.dll", EntryPoint = "OpenComm", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] public static extern int
c#动态引用DLL的方法.
C#编程中,使用dll调用是经常的事,这样做的好处是非常多的,比如把某些功能封装到一个dll中,然后主程序动态调用这个dll。
C# 中静态调用C++dll 和C# 中动态调用C++dll
C# 中静态调用C++dll 和C# 中动态调用C++dll 在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译。这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下: 一. C# 中静
C# 如何调用VB6.0编写的dll
C# 如何调用VB6.0编写的dll
c# 动态加载dll文件,并实现调用其中的方法
以下是测试代码: 新建一个classlibrary,包含两个类class1和class2,这两个类中分别有一个方法,都是返回一个字符串,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace mydll {     public cla
c#动态加载dll并调用dll中类的方法
c#动态加载dll并调用dll中类的方法 当然,这里指的是托管的dll与托管的方法,实际上用到的东西大部分是在反射(reflecting)命名空间里头的。 用途或许广泛吧,我不是很确信,但这个是在运行期绑定的,那么就不会有编译期绑定那么僵硬……但也没有编译期绑定那么简单。 可以用于做插件之类的。 先是一个接口,实现了这个接口的类被认为是合法的,可以被载入的…… ?
vs C# wpf 如何引入(导入)库、dll 图示教程 一步一步 教你wpf导入库
vs C# wpf 如何引入(导入)库、dll 图示教程 一步一步 教你wpf导入库
利用C#的反射机制动态调用DLL类库
1、使用Assembly类定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。 2、使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。 一、创建用于反射调用的DLL   u
DLL静态和动态调用
采用lib文件调用DLL(采用Lib文件的调用方式又被称为静态调用) 静态调用定义: 静态调用,也称为隐式调用,由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码(Windows系统负责对DLL调用次数的计数),调用方式简单,能够满足通常的要求。通常采用的调用方式是把产生动态连接库时产生的.LIB文件加入到应用程序的工程中,想使用DLL中的函数时,只须在源文件中声明一下。 LIB文件
C#(Csharp)调用C++编写的DLL动态链接库方法详解(含实例)
经常会用到C#(Csharp)调用C++编写的DLL(动态链接库)。由于C#(Csharp)是.NET框架下的托管代码,而C++一般都采用非托管代码,这样调用起来就会出现类型转换、释放资源等问题,该文档详细介绍了C#(Csharp)调用C++编写的DLL(动态链接库)的方法。很不错哦,和大家分享:)
C#编写和调用动态链接库
C#编写和调用动态链接库 一、创建dll文件:例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1
C#利用反射动态加载DLL(C#)并调用其中的接口
看了很多文章都说反射怎么怎么慢啊,明显就是对于反射的理解不够。的确你可以方便的去调用一个DLL的函数(虽然我从来不觉得用函数名作为字符串去调用是方便的),就像C++也可以动态调用DLL里面的函数一样,但是用过C++的人都知道傻逼才自己去声明回调去一个一个调用里面的函数,除非你真的闲的蛋疼。 但是C++有头文件可以include,这样编译器就知道这样行得通,而C#该怎么实现这样的Include?最
c#实现录屏功能
c#实现录屏功能,使用Interop.WMEncoderLib.dll实现该录屏功能,测试正常。
VS 2015 DLL的创建、静态调用和动态调用
DLL的创建创建步骤文件 -> 新建 -> 项目 -> “新建项目”对话框 -> “已安装” -> 模板 -> 其他语言 -> Vistual C++ -> Win32 控制台应用程序。在”Win32 应用程序向导”对话框中 “控制台程序类型”选择”DLL(D)” “附加选项”勾选”导出符号(X)” 导入(导出)标记的宏定义下列 ifdef 块是创建使从 DLL 导出更简单的宏的标准方法。此 DLL
C#Winform动态调用C++和C#的Dll
演示c# 通过设置DLL文件 生成操作 为 嵌入的资源 后,DLL文件嵌入生成的EXE里,然后动态调用DLL,妈妈再也不用担心我找不到DLL文件了
教程:将WPF控件转化为.dll文件实现控件打包重用
最近公司在进行显控软件的升级,需要将现有程序的winform界面升级为WPF。由于是刚刚接触C#和WPF,在开发过程中,自己摸索了一下自定义WPF控件的实现方法,在此做个总结。   先通过类库编译WPF程序生成dll文件,再在其他程序中引用对应的dll文件,即可开始调用了。   首先,新建项目,创建一个类库文件:     接着,在该项目中删除掉cs类文件,新建一个wpf文件:
简易手写输入法软件的编写
简易手写输入法软件编写,实现文字书写,和书写墨迹的文字识别功能
c/c++中_stdcall与dll动态调用
1._stdcall在动态dll调用中的注意事项 为了用vc写的dll能被其它语言的写的程序使用,即实现跨语言。我们在dll的函数调用约定中使用__stdcall . 但当用GetProcAddress调用是却失败了. 用dumpbin工具查看导出的函数名可以看到:导出的函数名确实为_mygetGrad@20 所以我们要阻止导出的函数名被编译器修改,方法就是使用de
C#下WPF中调用WinForm控件
最近在C#下调用NPlot生成股票K线图,由于用的WPF框架,而NPlot是基于WinForm开发的。所以不能直接引用。具体做法如下:   NPlot源码Microsoft .NET Framework 4.5版 1、引入DLL 创建工程后需要引入WindowsFormsIntegration.dll和System.Windows.Forms.dll两个Dll。WindowsFormsInte
C#发射调用dll的事件
主要是C#来实现主程序实现插件的事件。也就是插件的dll里定义了事件,事件触发的时候反给调用插件的主程序。
C# 动态调用DLL库
最近经常用到C#动态调用类库,简单的做下记录方便以后查询。 使用下面的几行代码就可以简单实现DLL类库的调用了 using System.Reflection; // 引入该命名空间 // 获取rocky.dll的文件路径 Assembly ass = Assembly.LoadFrom("./_lib/rocky.dll"); // 获取该dll中命名空间RockyNameSpac
WPF 后台动态加载UserControl的一种方法
  今天在看以前的项目时看到前辈们在后台加载UserControl的一种方法:1.在前台建一个Contentcontrol,Name="ctr1"。2.写一个函数,如下:public Object CreatUsercontrol(){    string ctrName= "WpfApplication1.UserControl1"; //WpfApplication1为要添加的Usercont...
C# 中如何编写和调用自己的DLL
一、什么是DLL 以及使用它的好处 1、DLL 即:动态链接库   DLL是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助
简单Demo:动态调用自己编写的动态链接库
一、引言在上一篇博客里,我主要实现了使用 C++ 自行编写和静态调用动态链接库的功能。这里附上上一篇博客的地址: 简单 Demo:C++编写、调用动态链接库动态链接库除了可以静态调用外,还可以动态调用。可能这里对术语不熟悉的同学就会搞混了以下这几个概念:这里通过查找资料,找到了以下的这四个术语的定义: 静态链接库:就是把 (lib) 文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需
C#写的dll跨语言调用
C#写的dll为非标准的windows下dll,故一般其他语言不能直接调用,当然基于.net平台下的编程语言是可以调用,要让其他语言调用C#写的dll一般通过webservice服务或者是Com方式。经过在网上找资料以及自身的实践发现可以通过以下方式在Delphi和VB语言中调用。 1.编写C#写dll,用VS新建一个类库项目TestDll,源码如下: using System; using
C#贪吃蛇游戏(用了wpf做界面)
上班无聊,想了下做个贪吃蛇游戏。用了wpf做页面,全屏全透明的,也就是说蛇在桌面全屏上面跑。红色的豆豆很小,而且还是一闪一闪的。本来是上下左右控制呢,最后想着一手握鼠标,一手在键盘上,桌面打开文档看着(其实是在玩游戏)。设置速度的是休眠线程,所以数字越大越慢。本来要抽出三层的,最后想了下,麻烦,就用了两层。主要是思想,希望能帮助好奇心的人学习下。
黑马程序员 C#学习笔记① 使用WPF实现简易计算器
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------     目的:运用一些WPF和C#基础知识实现一个能够进行整数加减乘除运算的计算器程序     功能:(1) 能够通过点击界面按钮在程序中输入数字并显示;          (2) 在处理6+5+这种输入组合, 会将前面的算式先进行计算
C#-wpf一个简单的井字棋程序
前言好久没有碰过代码了,上次看C#估计还是上个学期233,这次老师突然布置了一个C#语言编写的井字棋程序让我有点措手不及.不过,仗着微软爸爸的vs的强大的代码补全能力,最后还是将这个程序做好了(遇到了很多坑).要求该程序的要求还是有点多了,以下一一列举: 1. 在程序初始化时,要求输入玩家用户名,输入后出现提示文字,并选择是先手还是后手. 2. 点击Fight!后,进入游戏界面,
C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度
using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; n
C#动态创建类实例并动态调用指定的函数
C#动态创建类实例并动态调用指定的函数
C#程序实现动态调用DLL
摘 要:在《csdn开发高手》2004年第03期中的《化功大法——将DLL嵌入EXE》一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也有相似的V
相关热词 c# 增加元素 c#控制台简单加法 c# 服务端框架 c# 判断事件是否注册 c#中is和has c# udp 连接超时 c#词典 c#实现排列组合 c# oss 上传 c#判断输入的是否为ip