- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
拖放操作研究(Drag)张文韬
拖放操作研究(Drag)张文韬
拖放操作研究(Drag) Windows本身就支持大量的拖放操作,这样就创造了很好的用户体验。看了同类的一些软件,也在一些地方支持拖放操作,的确让使用软件变得比较方便,所以我们也打算在软件中尽可能的支持拖放操作,毕竟对于使用软件的人来说,越是直观的操作越好。 ??本来说来,在目前的阶段,不太适合进入到这种技术细节中去。但是目前由于不可抗拒的因素,让项目有所波折(只是暂时的问题,一切都会好起来的!),个人也想换换思维便研究起了拖放操作,对于以后实施也会有一定的借鉴意义。在设计界面上可以少走一些弯路。恩,废话少说,介绍一下拖放操作的实现先,也算是让自己再深入一次: 1、首先,在进行拖放操作之前,必须要对进行拖放操作的组件的AllowDrop属性值设定为True,因为此属性是确定组件是否可以进行拖放操作的。 不管是拖放操作的源控件还是目的控件的设置都是这样。 2、然后要完成一次的拖放操作,必须处理好三种事件:ItemDrag、DragEnter、DragDrop、DragOver、DragLeave。其中只有第一种事件是在源组件中触发的,另外四种事件是在目标组件中触发的(绝大多数控件能响应这几个事件)。其中当用户拖动组件触发ItemDrag事件;当拖动数据进入目标组件区域触发DragEnter事件;当用户在目标组件区域放置拖动的数据触发DragDrop事件,当用户的拖放光标进入目标区域触发DragOver,当用户的拖放光标离开拖放区域时触发DragLeave 。下面就根据拖放操作的操作顺序来详细介绍: ?? (1) 开始拖(Drag)操作--触发ItemDrag事件: ???? 大多数控件都不具有ItemDrag的事件的定义,像TextBox就没有。发现两个有这个定义的控件是ListView和TreeView。 ????????看代码如下: private??void??treeView1_ItemDrag(object??sender,ItemDragEventArgs??e){??string??strItem=e.Item.ToString();???????? //开始进行Drag操作??DragDropEffects dde=DoDragDrop(strItem,DragDropEffects.Copy|DragDropEffects.Move);} 在这里可以看见一个方法 DoDragDrop ( object data , DragDropEffects allowedEffects ),这个方法启动一个拖放操作,并且方法阻塞在这里等待拖放操作的返回,在DoDragDrop之后可以放置对拖放操作结果的处理代码,对于跨窗体跨应用程序的拖放操作是非常有意义的。 具体的信息可以查看??/Resource/msdn/cpref/frlrfsystemwindowsformscontrolclassdodragdroptopic.htm 。 ????DoDragDrop 方法有两个参数,第一个参数是要在拖放操作传递的数据,你可以放入各种数据类型,第二个参数来是说明此次拖放操作最后所要实现的效果,因为拖放操作有时实现的效果是把源组件中的内容拖到目标组件中,这种效果就是Move;有时拖放的效果是在目标组件中加入拖动的数据,对源组件的内容是没有什么影响的,这种效果就是Copy。当然无论是Move还是Copy,这都要通过具体的编程来实现,设定这些效果只是告诉操作系统,你进行拖放操作的类型,从而为拖放操作设定特定的图标。 ????DoDragDrop 返回的值也是 DragDropEffects 表示拖放操作所达成的效果。 值得注意的还有,上面的代码对于鼠标左右键拖放都会响应,如果只想支持左键拖放需要加入对鼠标的判断。 //判断是否是鼠标右键按动if??(??e.Button??==??MouseButtons.Right??)??return; ??(2) 让目标组件允许进行拖放操作: 上面提到了你可以将某种类型的数据,拖放到目标组件上,但是目标组件可能只能处理某种类型的数据,比如一个MP3播放软件,不允许将一个AVI的文件拖放到播放列表中,因为它处理不了。所以在拖放操作进入目标区域时候,需要对该拖放操作进行判断,主要是判断拖放中带有的数据类型。 DragEnter事件正好可以处理。在下列的代码中,从一个拖放源拖入一个listView控件,我们是通过判断拖放数据类型来确定是否接受拖放,如果是字符串,则可以,否则,则不行。具体代码如下: private??void??listView1_DragEnter??(??object??sender??,??DragE
文档评论(0)