首页 新闻 搜索 专区 学院

WinForm里怎么在TabControl控件中tabPage之间互相拖拽TreeView里的节点TreeNode

0
悬赏园豆:100 [已解决问题] 解决于 2012-05-18 14:50

一个小东西,要求

1.动态的往一个TabControl里添加TabPage.,

2.动态的往每一个TabPage里添加一个TreeView,

3.再动态添加TreeNode ,

4.然后还要实现右键菜单删除功能,

5.节点拖拽

6.从一个TabPage拖到另外一个TabPage里.....我无比纠结....

求代码

飞跃之章的主页 飞跃之章 | 初学一级 | 园豆:27
提问于:2012-05-16 19:58
< >
分享
最佳答案
0

你的意思是:从Tab1里的TreeView1中把一个TreeNode拖放到Tab2里的TreeView2中吧?

 

首先,对TreeView1的TreeNode设置可拖放支持,接着,会先把TreeNode拖放到Tab2的Tab上,对Tab2设置接受拖放的行为,此时,自动激活Tab2,再拖放到TreeView2中(设置接受节点的释放)

收获园豆:100
无之无 | 大侠五级 |园豆:5085 | 2012-05-16 20:15

嗯就是这么个意思 呵呵 但是 tab是自动生成的  怎么设置它呢?

飞跃之章 | 园豆:27 (初学一级) | 2012-05-17 08:46

@飞跃之章: 自动生成的也可以设置它能接受拖拽,也能设置它接受拖拽时的数据处理方法。

具体的设置,你可以:

首先在设计器里设置好(通过属性配置好),然后查看窗体的设计器代码 ( 在Designer.cs中),里面有一个InitializeComponents,简单分析下就有了。

无之无 | 园豆:5085 (大侠五级) | 2012-05-17 08:48

@笨笨蜗牛: 设计器里是没有Treeview这个控件的 运行之后自动添加的...

飞跃之章 | 园豆:27 (初学一级) | 2012-05-17 12:51

@飞跃之章: 运行后自己添加的也是一样的操作,你不知道操作的话,可以先通过设计器设计,然后看下设计器自动生成的代码,再在自己代码里使用。

无之无 | 园豆:5085 (大侠五级) | 2012-05-17 13:42

@笨笨蜗牛: 我试了下 鼠标拖动TreeNode的时候是不允许移出当前的tabpage的 已出去 鼠标的图标就编程黑圈了

飞跃之章 | 园豆:27 (初学一级) | 2012-05-17 16:40

@飞跃之章: 这个其实我比较少做,具体该怎么操作的不能确定,但能肯定一点的是,我前面说的方案是可行的。

事实上,在MS的桌面应用里,就存在从一个窗口拖动东西到另外一个窗口,窗口之间都可以,何况是同一个窗口内部的不同TAB标签呢?

我刚做了个简单的实验:在VS2010的代码编辑窗口(也是TAB形式的)中,从一个代码文件中选择一段内容后进行拖放,能拖放到另外一个代码窗口(文件)中。

另外,当我们通过QQ发送文件、文件夹的时候,其实也是能从Windows的资源管理器里直接拖放选定的文件、文件夹到QQ聊天对话框中。同时,还能在不同的QQ聊天对话框之间拖放图片、表情等。

你可以体会下VS中的情况。

无之无 | 园豆:5085 (大侠五级) | 2012-05-17 16:45

@笨笨蜗牛: 是不是应该设置什么属性?我这边只要鼠标一脱离当前tab页,就会变成一个有一道斜杠的黑色圆圈..

飞跃之章 | 园豆:27 (初学一级) | 2012-05-18 14:49

@飞跃之章: 应该对目标tab设置一个当拖拽状态进入的时候就把这个tab页面激活的属性。

无之无 | 园豆:5085 (大侠五级) | 2012-05-18 14:50

@笨笨蜗牛: 这个需要触发一个鼠标停靠事件....关键是获得不了这个Tab的对象

飞跃之章 | 园豆:27 (初学一级) | 2012-05-21 16:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册