C#实现拖放操作重点.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#实现拖放操作 随着桌面系统的推出,利用鼠标的拖放(Drag and Drop)操作由于其简单、直接,受到了越来越多的读者的欢迎,为迎合这种趋势,越来越多程序员在自己的程序中使用了拖放操作。拖放操作方便了程序的使用者,但由于拖放操作在程序中的设计工作比较还有点麻烦,甚至是一个难点,许多程序员对其都有点心有余悸。本文就结合微软公司最新的.Net程序开发语言--C#,来全面介绍一下在C#中是如何处理拖放操作的。 在本文中,我们是通过二个代表组件,也是在拖放操作中经常使用到的二个组件--TreeView组件和ListView组件,之间互相进行拖放操作来说明此类问题的。在进行拖放操作之前,必须要对进行拖放操作的组件的AllowDrop属性值设定为True,因为此属性是确定组件是否可以进行拖放操作的。 一. 本文中介绍的程序的设计和运行的软件环境: (1).微软公司视窗2000服务器版 (2)..Net FrameWork SDK Beta 2 二. 由TreeView组件到ListView组件的拖放操作: 要完成此次的拖放操作,必须处理好三种事件:ItemDrag、DragEnter、DragDrop。其中只有第一种事件是在源组件中触发的,另外二种事件是在目标组件中触发的。其中当用户拖动组件触发ItemDrag事件;当拖动数据进入目标组件区域触发DragEnter事件;当用户在目标组件区域放置拖动的数据触发DragDrop事件。下面就根据拖放操作的操作顺序来详细介绍: (1).开始拖(Drag)操作: 通过DoDragDrop方法拉开了拖放操作的第一步。DoDragDrop方法的语法为: DoDragDrop ( object data , DragDropEffects allowedEffects ) ; 其中第二个参数来是说明此次拖放操作最后所要实现的效果,因为拖放操作有时实现的效果是把源组件中的内容拖到目标组件中,这种效果就是Move;有时拖放的效果是在目标组件中加入拖动的数据,对源组件的内容是没有什么影响的,这种效果就是Copy。当然无论是Move还是Copy,这都要通过具体的编程来实现,设定这些效果只是告诉操作系统,你进行拖放操作的类型,从而为拖放操作设定特定的图标。此例中实现开始拖放操作的具体实现代码如下: private? void? treeView1_ItemDrag? (? object? sender? ,? ItemDragEventArgs? e? ) ? { ? string? strItem? =? e.Item.ToString? (? )? ; //开始进行Drag操作 DoDragDrop? (? strItem? ,? DragDropEffects.Copy? |? DragDropEffects.Move? )? ; ? } ?? 在上面代码中,我们定义的拖放数据类型是字符串,其实拖放的数据类型可以是很多种的,你可以通过修改DoDragDrop方法的第一个参数来设定你所要拖放数据类型,譬如:位图或者其他什么。 (2).目标组件允许进行拖放操作: 既然你已经开始进行拖放操作,你还必须告诉你要拖放到的目标组件,要接受你所拖放的数据,DragEnter事件正好可以处理。在下列的代码中,我们是通过判断拖放数据类型来确定是否接受拖放,如果是字符串,则可以,否则,则不行。具体代码如下: private? void? listView1_DragEnter? (? object? sender? ,? DragEventArgs? e? ) ? { ? //判断是否目前拖动的数据是字符串,如果是,则拖动符串对目的组件进行拷贝 ? if? (? e.Data.GetDataPresent? (? DataFormats.Text? )? ) ? e.Effect? =? DragDropEffects.Move? ; ? else ? e.Effect? =? DragDropEffects.None? ; ? } ?? (3).获得拖放的字符串,在目标组件中加入相应的内容: 此步的处理过程是十分明确的,要分成二步来进行,首先要得到拖放的字符串,其次是在目标组件中加入以此字符串为标题的项目。当然还要在相应的位置了。下面就是实现这二步操作的具体代码: private? void? listView1_DragDrop? (? object? sender? ,? DragEventArgs? e? ) ? { ? string? dummy? =? temp? ; ? //获得进行Drag操作中拖动的字符串 ? string? s? =? (? string? )? e

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档