c#的winform里的MouseMove事件很特殊,当鼠标在一个组件上移动的时候会收到MouseMove事件,但是另一种情况:当在组件上按住左键拖拽移动(组件先收到MouseDown事件)的时候,鼠标在整个窗口内移动时,这个组件都会收到MouseMove事件,而这个组件的MouseUp事件的就收范围也会变为窗口,也就是说,按住左键的情况是特殊的,随后的所有鼠标事件都会被发送到MouseDown发送到的那个组件。貌似是winform为实现组件拖拽的特殊处理。
这样拖拽组件就变得更容易实现了,只要在单个组件上就能实现,而不用想javascript或其他ui框架那么麻烦了。
例子: