标准事件触发问题,谁有办法?
我把一个自定义控件作在DLL里面,然后在控件的程序里面想触发鼠标的标准事件(mouseUp),触发之后,调用这个DLL的控件的程序相应的事件的程序就可以相应了。怎么办?
就是这个意思:
RaiseEvent--〉触发mouseUp(标准事件)[之前为DLL中代码]--------->[之后为EXE中代码]Sub cboCorpor_MouseUp(...)(被触发)代码该怎么写?谢谢各位!
问题点数:50、回复次数:9Top
1 楼zhouxiaotan(夜雨悠扬)回复于 2006-03-01 10:38:58 得分 0
使用委托,
Private fromMouseEvent As System.Windows.Forms.MouseEventHandler
然后调用的时候,使用Addressof的方法将Sub cboCorpor_MouseUp的地址传给他
触发mouseUp(标准事件) 之中使用fromMouseEvent.Invoke(...)就可以将事件传出去了Top
2 楼sunml_asp(二吊子)回复于 2006-03-01 11:02:22 得分 0
可是我不想做委托,我想直接触发系统的标准事件,不能吗?
Top
3 楼zhouxiaotan(夜雨悠扬)回复于 2006-03-01 11:14:03 得分 40
方法一,可以把系统事件委托给Dll的Mouse事件,方法就是上面的那个样子
方法二,在Dll公布事件,在Dll里面触发,在外面使用,方法如下
Dll中
public Event MouseUpA(...)
触发mouseUp(标准事件) RaiseEvent MouseUpA(...)
Exe中
private Event cboCorpr....
下面这一部分可以看成标准事件,可以使用标准的事件名进行,我为了说明采用了不同的名字
private sub cboCorpr_mouseupA(...) handles cboCorpr.MouseupA
...
end sub
Top
4 楼intern9901()回复于 2006-03-01 12:29:09 得分 10
在DLL中直接Call就行了阿。当然参数全是Nothing了,因为不可能有鼠标的坐标之类的东西了。Top
5 楼sunml_asp(二吊子)回复于 2006-03-01 13:59:16 得分 0
zhouxiaotan(夜雨悠扬) :您好!我不想再EXE的工程里添加任何代码,只是在Dll中加代码,让Dll的代码直接触发MouseUp。换个说法,我就是想在DLL中触发EXE的Sub ****_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles cboCorpor.MouseUp,能行吗?
intern9901() :我直接CALL,怎么做啊,没有EXE的命名空间啊?调用不了啊Top
6 楼zhouxiaotan(夜雨悠扬)回复于 2006-03-01 14:38:40 得分 0
哦,我的第二种方法就是呀,
最起码的控件你总得声明吧,而这个控件有一个事件就是mouse_up,在这里面写代码就行了Top
7 楼sunml_asp(二吊子)回复于 2006-03-01 15:54:57 得分 0
zhouxiaotan(夜雨悠扬):
您在EXE中的函数是;private sub cboCorpr_mouseupA(...) handles cboCorpr.MouseupA
我想要的效果是private sub cboCorpr_mouseupA(...) handles cboCorpr.Mouseup
MouseupA-〉Mouseup,就是用系统的那个事件的定义,不用自己定义的MouseupA。Top
8 楼zhouxiaotan(夜雨悠扬)回复于 2006-03-01 16:00:01 得分 0
哦,
你在DLL里面,使用下面的语句定义就是了
public Shadows Event Mouseup(...)
这时候外面的就是Mouseup而不是MouseupA了Top
9 楼sunml_asp(二吊子)回复于 2006-03-02 15:53:40 得分 0
zhouxiaotan(夜雨悠扬) :
果然可以,哈哈,谢谢了,结贴,给分Top




