DLL事件的触发问题

wangtao_028 2018-05-29 12:11:21
这是创建的一个DLL文件
public class EMain {

public event EventHandler ts;

public void test() {
ts();
}
}

外部程序一中调用
using ClassLibrary1;
public class Form1 {
EMain A = new EMain();
private void Form1_Load(object sender, System.EventArgs e) {
A.ts += new System.EventHandler(this.ts);
}

private void Button1_Click(object sender, System.EventArgs e) {
//调用功能,测试用
A.test();
}

private void ts() {
//返回事件调用
}
}

外部程序二中调用
using ClassLibrary1;
public class Form1 {
EMain A = new EMain();
private void Form1_Load(object sender, System.EventArgs e) {
A.ts += new System.EventHandler(this.ts);
}

private void ts() {
//事件调用,无法响应事件
}
}

我想达到的要求是,外部程序一激活了dll中的事件,其外部程序二中也能返回激活的事件,这个如何能实现,有办法实现吗
...全文
234 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangtao_028 2018-05-29
  • 打赏
  • 举报
回复
不知是否正确,我更改成static也不行,麻烦您看看 //dll文件 public class EMain { public event EventHandler ts; public static void test() { ts(); } } 外部程序一中调用 using ClassLibrary1; public class Form1 { private void Form1_Load(object sender, System.EventArgs e) { EMain.ts += new System.EventHandler(this.ts); } private void Button1_Click(object sender, System.EventArgs e) { //调用功能,测试用 EMain.test(); } private void ts() { //事件调用正常 } } 外部程序二中调用 using ClassLibrary1; public class Form1 { private void Form1_Load(object sender, System.EventArgs e) { EMain.ts += new System.EventHandler(this.ts); } private void ts() { //事件调用,无法响应事件 } }
  • 打赏
  • 举报
回复
statc --> static 可以复习一下 static 的概念。
  • 打赏
  • 举报
回复
两个 Form 对象实例中,分别由自己私有的 EMain 对象,毫无交集。 如果要有一个单例,那么你应该写类似
statc readonly EMain A = new EMain();
这类代码,这样的内部单例对象是属于“类型”的,而不是属于普通对象实例的。
wangtao_028 2018-05-29
  • 打赏
  • 举报
回复
的确受教了,谢谢朋友
大鱼> 2018-05-29
  • 打赏
  • 举报
回复
引用 6 楼 wangtao_028 的回复:
谢谢您,我估计解决不了,因为不同程序加载相同的dll后,在不同的映射区,dll中的变量事件都无法共享。 还请问下思路,主程序中触发的事件,如何让其它外部程序也能响应触发的事件?
可以学习一下观察者模式,这个或许能解决你的问题
wanghui0380 2018-05-29
  • 打赏
  • 举报
回复
外部程序二?? 请区分什么是应用程序域,什么是进程,什么是线程?
wangtao_028 2018-05-29
  • 打赏
  • 举报
回复
谢谢您,我估计解决不了,因为不同程序加载相同的dll后,在不同的映射区,dll中的变量事件都无法共享。 还请问下思路,主程序中触发的事件,如何让其它外部程序也能响应触发的事件?
  • 打赏
  • 举报
回复
我绝对没有说要写
 public static void test() 
这个哦。你要仔细。
  • 打赏
  • 举报
回复
static EMain A = new EMain();
项目名称:[精仿]360手机助手-14.2.6更新(CSkin Demo) 界面库版本号:14.2.6 最新版本 下载内容: 精仿360手机助手源码一份, 可引用至工具箱最新版CSkin.dll一份 实现功能: 1.发光标题。 2.直角边框和阴影。 3.360手机助手主界面模仿。 4.多系统支持,不需要win8系统,即可实现win8风格的360手机助手。 5.自定义控件的美化使用。 界面库更新文档: CC2014-2.6 1.修复拖动好友出现的负值BUG和拖动后有机率会消失的问题。 2.好友列表DoubleClickSubItem事件添加回调参数MouseEventArgs,用于判断鼠标操作的一些参数,如:左键双击还是右键双击判断。 3.对SkinDataGridView属性进行部分重构,颜色美化属性增加。 4.窗体加入绘制模式边框颜色属性BorderColor和InnerBorderColor 5.解决SkinTabControl left和right绘制模式下tab标签悬浮样式不变化问题。 6.所有控件采用最高质量模式绘制文字,防止字体模糊以及锯齿。 CC2013-12.8 1.优化SkinTabControl的效率,不再呢么闪烁,360DEMO直接替换DLL,改部分属性小错误,就可以看到明显闪烁减少效果。 2.为SkinStrip分类的控件添加 是否统一变换字体颜色的属性。 3.为SkinAnimatorImg动画图片框控件添加Stretch属性,是否拉伸模式绘制动画。 4.修复SkinComboBox无法DataSource绑定项的BUG。 5.增加音乐播放器,萝莉人物窗体,等DEMO。 6.修复部分细节bug。 提示:窗体继承SkinMain,再设置下SkinBack,有你想不到的惊喜哦,此窗体是用于绘制异形窗体专用,你给他什么图片,窗体就会按照图片来绘制。有一个缺点就是,有透明像素的背景区域,控件不给于显示。 CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题
项目名称:[精仿]360安全卫士-10.30更新(CSkin Demo) 界面库版本号:10.30 最新版本 下载内容: 精仿360安全卫士源码一份, 可引用至工具箱最新版CSkin.dll一份 实现功能: 1.发光标题。 2.直角边框和阴影。 3.360安全卫士主界面模仿。 4.多系统支持,不需要win8系统,即可实现win8风格的360。 5.自定义控件的美化使用。 界面库更新文档: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部分细节调优。 小编:下载不要分,DEMO教你如何熟练使用CSkin界面库美化自己的窗体。 友情链接: http://bbs.csdn.net/topics/390510544 (精仿QQ2013局域通讯) http://download.csdn.net/detail/lyx_520/5710799 (C#实现Win8窗体)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧