您的位置:首页 > 其它

自定义控件事件传递过程

2012-03-12 16:41 141 查看

自定义控件事件传递过程

本人使用自定义控件发现如果自定义控件被另一个控件全部覆盖,当双击或单击窗体时,事件引起控件事件不是主体事件,多次测试才找到这个技巧。

首先加一个自定义控件,然后在自定义控件窗体上添加一个PANEL控件,并让控件FILL全部面板,当控件实例化时,我们在操作拖拉主界面的上的控件时,能实现自定义控件,在自定义控件中首先要重写事件

ShadowsEventMouseDown(senderAsObject,eAsSystem.Windows.Forms.MouseEventArgs)
ShadowsEventMouseUp(senderAsObject,eAsSystem.Windows.Forms.MouseEventArgs)
ShadowsEventMouseMove(senderAsObject,eAsSystem.Windows.Forms.MouseEventArgs)
‘新的事件要用shadows来覆盖原事件。接下来要对事件进行加载操作,并将panel对应的事件传递给主窗体对应的事件,这里需要'注意的传递事件,在传递时sender不是panel主体而是自定义控件的自身。所以要用ME来替代sender.
PrivateSubUcShow_Load(senderAsSystem.Object,eAsSystem.EventArgs)HandlesMyBase.Load
AddHandlerPanelTItle.MouseDown,AddressOfUcShow_MouseDown
AddHandlerPanelTItle.MouseUp,AddressOfUcShow_MouseUP
AddHandlerPanelTItle.MouseMove,AddressOfUcShow_MouseMove
EndSub

PrivateSubUcShow_MouseDown(senderAsObject,eAsMouseEventArgs)
RaiseEventMouseDown(Me,e)
EndSub

PrivateSubUcShow_MouseUp(senderAsObject,eAsMouseEventArgs)
RaiseEventMouseUp(Me,e)
EndSub

PrivateSubUcShow_MouseMove(senderAsObject,eAsMouseEventArgs)
RaiseEventMouseMove(Me,e)
EndSub


在主窗体中,使用时还要对相应的事件进行再次重写

AddHandlerctlUcshow.MouseMove,AddressOfPictureBox_MouseMove
AddHandlerctlUcshow.MouseUp,AddressOfPictureBox_MouseUp
AddHandlerctlUcshow.MouseDown,AddressOfPictureBox_MouseDown


另要还要对委托执行的事件再次重写一下,这样此过程才能完成、

PublicX,YAsInteger

PrivateSubPictureBox_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)
X=e.X:Y=e.Y
EndSub
PrivateSubPictureBox_MouseUp(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)
EndSub
PrivateSubPictureBox_MouseMove(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)

IfNotMoveEnableThenExitSub
IfX=e.XAndY=e.YThenExitSub
Ife.Button=Windows.Forms.MouseButtons.LeftThen
sender.Left=sender.Left+e.X-X
sender.Top=sender.Top+e.Y-Y
EndIf

EndSub
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: