你的意思是:从Tab1里的TreeView1中把一个TreeNode拖放到Tab2里的TreeView2中吧?
首先,对TreeView1的TreeNode设置可拖放支持,接着,会先把TreeNode拖放到Tab2的Tab上,对Tab2设置接受拖放的行为,此时,自动激活Tab2,再拖放到TreeView2中(设置接受节点的释放)
嗯就是这么个意思 呵呵 但是 tab是自动生成的 怎么设置它呢?
@飞跃之章: 自动生成的也可以设置它能接受拖拽,也能设置它接受拖拽时的数据处理方法。
具体的设置,你可以:
首先在设计器里设置好(通过属性配置好),然后查看窗体的设计器代码 ( 在Designer.cs中),里面有一个InitializeComponents,简单分析下就有了。
@笨笨蜗牛: 设计器里是没有Treeview这个控件的 运行之后自动添加的...
@飞跃之章: 运行后自己添加的也是一样的操作,你不知道操作的话,可以先通过设计器设计,然后看下设计器自动生成的代码,再在自己代码里使用。
@笨笨蜗牛: 我试了下 鼠标拖动TreeNode的时候是不允许移出当前的tabpage的 已出去 鼠标的图标就编程黑圈了
@飞跃之章: 这个其实我比较少做,具体该怎么操作的不能确定,但能肯定一点的是,我前面说的方案是可行的。
事实上,在MS的桌面应用里,就存在从一个窗口拖动东西到另外一个窗口,窗口之间都可以,何况是同一个窗口内部的不同TAB标签呢?
我刚做了个简单的实验:在VS2010的代码编辑窗口(也是TAB形式的)中,从一个代码文件中选择一段内容后进行拖放,能拖放到另外一个代码窗口(文件)中。
另外,当我们通过QQ发送文件、文件夹的时候,其实也是能从Windows的资源管理器里直接拖放选定的文件、文件夹到QQ聊天对话框中。同时,还能在不同的QQ聊天对话框之间拖放图片、表情等。
你可以体会下VS中的情况。
@笨笨蜗牛: 是不是应该设置什么属性?我这边只要鼠标一脱离当前tab页,就会变成一个有一道斜杠的黑色圆圈..
@飞跃之章: 应该对目标tab设置一个当拖拽状态进入的时候就把这个tab页面激活的属性。
@笨笨蜗牛: 这个需要触发一个鼠标停靠事件....关键是获得不了这个Tab的对象