自定义控件事件传递过程
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
相关文章推荐
- 继承已有ViewGroup实现自定义控件、touch事件的传递
- Android事件传递机制(更加深入的了解事件的触发过程)
- qt事件传递过程和处理
- Android自定义控件4----Android中事件传递机制
- android View 的ontouch事件传递过程
- INPUT设备输入事件的传递过程
- linux input子系统分析--子系统核心.事件处理层.事件传递过程
- Android中触摸事件传递过程
- 63-iOS事件产生和传递过程(包括底层)
- 源码 Activity 事件传递分发过程
- android自定义控件系列教程-----touch事件的传递
- Android事件传递机制(更加深入的了解事件的触发过程)
- 事件传递/处理过程
- 响应者链的事件传递过程
- touch事件发生后的传递过程
- Andorid事件传递过程
- View的绘制、事件传递过程
- Linux input子系统分析---5、事件传递过程
- android自定义控件事件的传递
- 自定义控件,touch事件传递