文章标签 ‘拖放’

上一篇,我们实现了同一窗体间的拖放,并且显示鼠标跟随效果,今天,我们来实现不同窗体之间的拖放,因为不是用一个窗体,而Adorner(装饰器)只能在父窗体内移动,所以,我们实现不同窗体之间显示鼠标跟随效果,就要再新建一个窗体来显示鼠标跟随的内容。我们先看一下完成后的效果图。 由于要获得鼠标相对屏幕坐标和把拖放窗体的位置带到放置窗体的位置,需要使用Win32 API来完成,我们先创建一个类,代码如下: 我们通过GetCursorPos()方法获得鼠标坐标,GetWindowLong()、SetWindowLong()方法获得和设置窗体属性。 接下来,我们编写拖拽窗体Window1.xaml.cs,代码如下 关键代码在StartDragWindow(MouseEventArgs)这个方法,开始拖拽时,我们先创建_dragdropWindow这个拖拽窗体,并进行相应初始化操作,定义被拖拽物体(这里为矩形)状态发生变化时调用UpdateWindowLocation()方法,更新拖拽窗体位置,拖拽完成后调用DestroyDragDropWindow()方法,销毁拖拽窗体,这一系列过程,达到完成窗体拖拽操作。 最后,我们编写放置窗体Window2.xaml.cs,代码如下 这里的代码很简单,WPF的拖放(一)已经有说明,有什么不明白就看文章一吧。 本文代码下载

2010年2月21日11:32 1 条评论

上一篇,我们实现了基本拖拽操作,今天,我们来实现,拖拽过程中鼠标跟随效果,这里我们要用到WPF新对象Adorner(装饰器)用来显示拖拽内容,如我们今天拖拽的矩形。首先,我们新建一个DragAdorner类,继承Adorner用来显示拖拽内容,代码如下 我们声明几个对象,并且修改上篇代码中矩形的PreviewMouseMove事件 这样,就实现了,拖拽过程中显示跟随效果。关键代码就在StartDrag(MouseEventArgs)方法中,开始拖放的时候创建显示拖拽的对象,移动过程中更改装饰坐标,鼠标释放的时候移除装饰对象。看懂了之后,会发现WPF的拖拽并不复杂,但是,如何实现不同窗体之间的拖拽呢?后面我们会做介绍。 本文代码下载

2010年2月21日09:38 没有评论

拖放在C/S开发过程中总是一个难点,但是,为了得到更好的用户体验,很多地方还是需要使用到拖放的,今天,我们介绍一下WPF的拖放。 还是以往的惯例,用实例来说明WPF的拖放是如何实现的。 我们要实现的就是让左边的红色矩形移动到右边。首先,我们先编写xaml文件,代码如下 接着,我们来实现拖放中的拖,这个是最重要的部分,首先,我们注册矩形的PreviewMouseMove事件。代码如下: 需要说明的是这里的data就是我们拖放时的实际数据,我们使用DragDrop.DoDragDrop()方法启动拖放操作,将数据带入拖放操作中。 接下来,我们实现放置操作,将拖放的数据放置到相应的控件上。所以我们首先要设置放置对象的AllowDrop=”True”属性,让其具有可以放置的特性,接着实现放置控件的DragOver(拖动完成),Drop(放置)事件。代码如下: 我们在DragOver中判断拖动中的数据数据类型是否是我们放置的数据类型,如果不是则停止拖放。我们在Drop事件中将对象放置,即完成所有拖放操作。通过上面代码可以很好的完成一些简单拖放,后面我们会介绍,拖放时如何让对象跟随鼠标等效果。 代码下载

2010年2月10日11:20 没有评论