编写窗体应用的插件程序

编写窗体应用的插件程序

ID:42587366

大小:57.50 KB

页数:10页

时间:2019-09-18

编写窗体应用的插件程序_第1页
编写窗体应用的插件程序_第2页
编写窗体应用的插件程序_第3页
编写窗体应用的插件程序_第4页
编写窗体应用的插件程序_第5页
资源描述:

《编写窗体应用的插件程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在编写窗体应用的插件程序开发时,如果主程序是窗体程序,如何在插件中调用主程序的窗体中的各种资源了,这是我采用的方法,请各位码农指点:首先定义插件接口publicinterfaceIAdvancedPlugin{FormMainForm〃这是关键,通过在主程序的装载插件方法给该窗体的引用赋值,即将主程序窗体的引用赋给插件程序中对应的字段{get;set;}voidFuncPluginLoad(FormmainForm);〃每个插件都会实现这个插件初始化的方法}在插件程序中这样获取主程序的组件:publicclassAdvancedPlugin:IA

2、dvancedPlugin{privateFormmainForm=null;privatePanel[Jpanels=newPanel[2J;TextBoxtb=newTextBox();〃输入框,用于引用主程序窗体屮的输入框LabelIbRcsult=newLabcl();//显示结果的标签,用于引用主程序窗体中的标签publicFormMainForm〃实现接口屮的字段{get{returnmainForm;}set{mainForm=value;}}〃插件初始化publicvoidFuncPluginLoad(FormmainForm)/

3、/Jfi件初始化的方法由主程序同意调用,调用的时候会将主程序窗休传递进來{this.MainForm=mainForm;IEnumcratoric=mainFoim.Controls.GctEnumcrator();〃获取包含在主程序窗体中的控件集合,这是关键,这样就获得了主窗体所有控件while(ie.MoveNextO)//遍历集合,查找需要使用的控件{Controlc=ie.CurrentasControl;〃讦(c.GctTypc()==typcof(Systcm.Windows.Forms.TcxtBox))//如果某种类型的组建只冇一

4、个就可以通过类型获取if(c.Name=“textBoxl”)//这种方法获取控件需要预先知道控件的名称,这可以在主程序提供的配置文件中找到{tb=casTextBox;}if(c.Name="IbResult")//同上IbRcsult=casLabel;卜•面是自己写一个简单的例子:先定义一个接口,将其生成dll文件,命名为server.dllusingSystcm.Tcxt;namespacePlugininterface{publicinterfaceIShow{voidShow();}}然后写主程序,引用server.dll,将主程序生

5、成.exc的可执行文件usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Dcita;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Reflection;usingPlugininterface;namespaceMainFormProj{publicpartialcl

6、assForml:Form{publicForm1(){lnitializeComponent();try{stringpath=Application.StartupPath;path=Systcm.IO.Path.Combinc(path,nPluginsH);foreach(stringfileinSystem.10.Directory.GetFiles(path,n*.dllH)){listBox1.Items.Add(file.Substring(file.LastIndexOf(H\")+1));listBoxl.Click+=nc

7、wEvcntHandlcr(listBox1_Click);catch(Exceptionex)MessageBox.Show(ex.Message);voidlistBox1_Click(objectsender,EventArgse){stringasmFile=listBox1.Selectedltem.ToStringO;stringasmName=System.IO.Path.GetFileNameWithoutExtension(asmFile);if(asmFile!=string.Empty){Assemblya=Assembly

8、.LoadFrom(MPlugins\M+asmFile);System.Type[]types=a.GetTypes();forea

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。