C# Form相关,return Form——如何加载自定义事件?

问题描述

在MyUI.dll中有Form1;usingSystem;usingSystem.Windows.Forms;namespaceMyUI{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}publiceventEventHandlerAdd;publiceventEventHandlerRemove;}}

在MyForm.Interface.Dll中有方法返回Form(Form1)usingSystem.Windows.Forms;namespaceMyForm.Interface{publicclassClass1{publicstaticFormGetForm(){Formfm=newMyUI.Form1();returnfm;}}}

现在HeForm.dll调用MyForm.Interface.dll中的“Class1.GetForm()”方法得到FormusingSystem;usingSystem.Windows.Forms;namespaceHeForm{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Formfm=MyForm.Interface.Class1.GetForm();}}}

此时,如何得到在"MyUI.Form1"中的自定义事件"Add"和"Remove"?注:返回值是:System.Windows.Forms.Form

解决方案

解决方案二:
Formfm=MyForm.Interface.Class1.GetForm();fm.Add+=...就可以了事件本身是封装的,如果你要得到委托,需要反射。
解决方案三:

解决方案四:
引用1楼caozhy的回复:

Formfm=MyForm.Interface.Class1.GetForm();fm.Add+=...就可以了事件本身是封装的,如果你要得到委托,需要反射。

因为返回值是"Form",无法这样直接注册呀.
解决方案五:
引用2楼freednc的回复:若以System.Windows.Forms.Formfm=newForm1();此时如何注册Form1中的自定义事件(EventEventHandler)Add.
解决方案六:
fm.Add+=
解决方案七:
Form1fm=MyForm.Interface.Class1.GetForm()asForm1;
解决方案八:
引用6楼caozhy的回复:

Form1fm=MyForm.Interface.Class1.GetForm()asForm1;

得到的是一个"System.Windows.Forms.Form"不是"Form1";这种情况下有没有注册自定义事件的办法?在无法获得"Form1"结构的情况,通过"Form"去注册原"Form1"中的自定义事件.

时间: 2024-12-27 06:10:05

C# Form相关,return Form——如何加载自定义事件?的相关文章

在C# winfrom项目,form窗体Picturebox控件加载的图片有闪动现象

问题描述 在C# winfrom项目,form窗体Picturebox控件加载的图片有闪动现象 在C# winfrom项目中,有两个form窗体(form1.form2),在form1中显示监控视频图像实时画面. 在form1窗体中居中弹出form2窗体(form2窗体不透明度设置为Opacity:80%),在form2窗体有一个Picturebox控件(设置充满整个form2窗体),在Picturebox中放置一张图片. 目前遇到一个问题:在form1窗体中居中显示form2窗体的过程中,fo

JQuery中DOM加载与事件执行实例分析_jquery

本文实例讲述了JQuery中DOM加载与事件执行原理.分享给大家供大家参考.具体分析如下: JavaScript和HTML之间的交互是通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化或操作时,浏览器会自动生成一个事件.例如当浏览器装载完一个文档后,会生成事件:当用户单击某个按钮时,也会生成事件.虽然利用传统的JavaScript事件能完成这些交互,但jQuery增加并扩展了基本的事件处理机制.jQuery不仅提供了更加优雅的事件处理语法,而且极大地增强了事件处理能

visual studio-vs2013中加载自定义的dll文件失败,怎么解决啊

问题描述 vs2013中加载自定义的dll文件失败,怎么解决啊 解决方案 先把这个dll复制到system32或者exe相同目录下. 解决方案二: 你的DLL需要放到exe目录下.在实例中,需要放到动态库调用测试.exe目录下. 解决方案三: 你这个依赖的dll socketclientzp.dll找不到

android加载自定义dialog,背景总是黑色的。不知道为什么。求解答

问题描述 android加载自定义dialog,背景总是黑色的.不知道为什么.求解答 java代码: LayoutInflater inflater = LayoutInflater.from(getActivity()); View v1 = inflater.inflate(R.layout.progress_dialog_item, null);// 得到加载view RelativeLayout layout = (RelativeLayout) v1.findViewById(R.id

Liferay加载自定义css 文件

(1) 对于特别通用的文件,比如是ext-js库要使用到的css文件,你可以有2个选择: 选择1:放在ROOT/html/common/themes/top_head.jsp中: .. <%-- Portal CSS --%> <!--added by charles to load the ext-js css library--> <link href="<%= HtmlUtil.escape(PortalUtil.getStaticResourceURL

js兼容浏览器的iframe加载完事件

在网页中点击某个按钮或链接下载文件的时候,从点击到文件开始下载的过程中有一个过程,如果没有对这个过程进行判断的话,用户会一直不停地进行点击,体验非常差.浏览器没有办法直接获取到下载文件的事件,一个讨巧的方法是可以使用iframe的onload事件,代码如下:  代码如下 复制代码  var url = "http://www.111cn.net";  var iframe = document.createElement('iframe');  iframe.src = url;  i

JQuery中DOM加载与事件执行实例分析

 JavaScript和HTML之间的交互是通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化或操作时,浏览器会自动生成一个事件.例如当浏览器装载完一个文档后,会生成事件:当用户单击某个按钮时,也会生成事件.虽然利用传统的JavaScript事件能完成这些交互,但jQuery增加并扩展了基本的事件处理机制.jQuery不仅提供了更加优雅的事件处理语法,而且极大地增强了事件处理能力. 以浏览器装载文档为例,在页面加载完毕后,浏览器会通过JavaScript为DOM元素

动态加载onclick事件中的变量问题

错误的方法:mycurrent_row.attachEvent("onclick",function(){document.getElementById('JobCateDetail').value = strArray[x].split("#")[1];}); 正确的方法:(function (x){mycurrent_row.attachEvent("onclick",function(){document.getElementById('J

css3加载自定义字体

@font-face { font-family: 'brisa';//字体名称 src: url('../fonts/brisa.ttf');//文件路径 font-weight: normal;//定义字体是否为粗体 font-style: normal;//主要定义字体样式,如斜体 } h1{ font-family:"brisa"; } .ttf字体是Windows和Mac的最常见的字体,是一种RAW格式,因此他不为网站优化,支持这种字体的浏览器有[IE9+,Firefox3.