高深的委托链问题!求高手、专家解决

mandyfan 2008-04-25 08:53:07
前提:目前使用的是VS2003,FrameWork1.1
1.比如在某个窗体Form1里放置了一个按钮Button1,
2.并在窗体里对按钮的Click事件编写了代码: Sub Button1_Click(...) handles Button1.Click
3.在另外一个窗体Form2使用这个窗体:dim form as new Form1
4.使用方法:我想在Button1现有绑定的处理(即Button1_Click)前再增加绑定一个处理函数;也就是Button1.Click事件先进入我新绑定的函数,然后再进入原Form1.Button1_Click函数
5.重点问题:我在Form2中并不知道Button1.Click绑定的函数叫做Button1_Click,也就是不能用
RemoveHandler Form1.Button1.Click Addressof Form1.Button1_Click
AddHandler Form1.Button1.Click Addressof MyNewClickDeal
AddHandler Form1.Button1.Click Addressof Form1.Button1_Click
因为我不知道Form1.Button1.Click绑定的函数叫做Form1.Button1_Click!

问题1:请问在这种情况下我如何将新的函数MyNewClickDeal加入到Form1.Button1.Click原处理函数之前

6.如果Button1.Click绑定了两个处理函数,我想在第一个处理函数中进行一个检测,如果失败,则不允许继续执行下一个处理函数。
问题2:如何实现?

如果使用VS2005,FrameWork2.0能实现以上功能吗?
...全文
105 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mandyfan 2008-06-12
  • 打赏
  • 举报
回复
对的,我现在就是不知道如何获取FORM1中传来的绑定在Button1.Click事件上的方法名。如果有办法取得就OK了!
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
接分先!
lake_cx 2008-04-25
  • 打赏
  • 举报
回复
呵呵,楼主可能是想封装某些东西,让外部看起来更为简洁
楼主需要的一种功能是从事件中取出委托,从事件中移除委托
但这些只能用反射实现,而且并不方便,中间有个东西涉及强制转换,还需要了解委托的结构
llsus 2008-04-25
  • 打赏
  • 举报
回复
这么做根本毫意义,无需使用2个事件啊,同一个操作触发2个事件和一个事件有什么分别?
HimeTale 2008-04-25
  • 打赏
  • 举报
回复
03的话可以用反射解决...
缺点就是反射的代价高,效率低
HimeTale 2008-04-25
  • 打赏
  • 举报
回复
5.重点问题:我在Form2中并不知道Button1.Click绑定的函数叫做Button1_Click,也就是不能用

以上这个问题在05中很好解决,声明一个接口包含方法Button1_Click,
然后用泛型类要求class Form1实现该接口,这样就可以在类Form2中随意调用Button1_Click这个方法了。
firein 2008-04-25
  • 打赏
  • 举报
回复
你可以像http://blog.csdn.net/lzmtw/archive/2006/08/02/1010980.aspx一样从Form1 传方法名称过来吧
firein 2008-04-25
  • 打赏
  • 举报
回复
HOW TO:以事件名称与方法名称为参数的事件关联
http://blog.csdn.net/lzmtw/archive/2006/08/02/1010980.aspx
yanlongwuhui 2008-04-25
  • 打赏
  • 举报
回复
看不明白这样实现的目的,不知道能不能把MyNewClickDeal的处理放Form1.Button1_Click 中
zhujiechang 2008-04-25
  • 打赏
  • 举报
回复
调用的Button.PerformClick方法,可以触发它关联的Click事件
LGame 2008-04-25
  • 打赏
  • 举报
回复
你把控件的modifiers 這個屬性座成public 這樣你就能在別的畫面訪問了!!

都在一起的畫面,你不知道按钮的方法id??,方法又不是动态创建的
vesion 2008-04-25
  • 打赏
  • 举报
回复
为什么不放在同一个处理函数呢
mandyfan 2008-04-25
  • 打赏
  • 举报
回复
为什么我要这样实现:
1.我有很多FORM,每个FORM里有很多功能Button,功能有打开子窗体或者是进行DB处理的;
2.现在每个FORM在初始化的时候都会执行一个共通的处理函数;
3.我想在这个共通处理函数中,对每个功能Button都增加一个处理方法MyNewClickDeal;
4.在这个函数里,我想进行一些判断,如果成功,则继续执行原先的Button.Click事件处理,否则就不执行原来的处理

我现在就是不想把所有的窗口里的Button.Click事件都改一遍,把MyNewClickDeal加进去!
这样程序会更简洁,而且此方法可以扩展到对其他一些事件的共通检查
smallfz 2008-04-25
  • 打赏
  • 举报
回复
在Form1添加一个新的事件:

public event MyPreClickEventHandler PreClick;

public void Button1_Click(object sender, ....){
PreClick(...);
}

在Form2中处理这个PreClick事件:

Form2(..){
...
....
..
form1.PreClick+=new MyPreClickEventHandler(....);
}

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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