- 浏览: 3047977 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
今天有同学问该如何clone一个TreeView。然后我问他是要浅拷贝还是深拷贝,他说浅拷贝也没问题,只要看起来内容一样就行。
那就好办了不是么。TreeView本身没办法Clone(),不过只是要内容一样的话,只要把顶层的TreeNode从源TreeView复制到目标TreeView就OK。
假如我有一个Form1,里面有一个treeView1成员。有一个按钮,点击它会创建一个Form2,像这样:
Form1.cs:
然后Form2里也有一个treeView1成员,并且构造器接受一个TreeView的参数,像这样:
于是我们在Form2的构造器里就把参数里的TreeView的顶层TreeNode都复制了一次。完事。
或者下载一下这个工程去看看吧~
真在工作中肯定是不应该把一个Form的私有TreeView传给别的Form。更好的办法或许是先把TreeNodeCollection给复制到一个一维数组(TreeNodeCollection.CopyTo(TreeNode[] nodeArray, int index)),然后把这个数组传给目标。嘛怎么复制都好,反正浅拷贝的话只要复制顶层节点就OK。
Case closed.
那就好办了不是么。TreeView本身没办法Clone(),不过只是要内容一样的话,只要把顶层的TreeNode从源TreeView复制到目标TreeView就OK。
假如我有一个Form1,里面有一个treeView1成员。有一个按钮,点击它会创建一个Form2,像这样:
Form1.cs:
using System; using System.Windows.Forms; namespace TestTreeView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form form2 = new Form2(this.treeView1); form2.Visible = true; form2.Activate(); } } }
然后Form2里也有一个treeView1成员,并且构造器接受一个TreeView的参数,像这样:
using System.Windows.Forms; namespace TestTreeView { public partial class Form2 : Form { public Form2(TreeView tv) { InitializeComponent(); this.treeView1.Nodes.Clear(); foreach (TreeNode node in tv.Nodes) { TreeNode newNode = node.Clone() as TreeNode; this.treeView1.Nodes.Add(newNode); } } } }
于是我们在Form2的构造器里就把参数里的TreeView的顶层TreeNode都复制了一次。完事。
或者下载一下这个工程去看看吧~
真在工作中肯定是不应该把一个Form的私有TreeView传给别的Form。更好的办法或许是先把TreeNodeCollection给复制到一个一维数组(TreeNodeCollection.CopyTo(TreeNode[] nodeArray, int index)),然后把这个数组传给目标。嘛怎么复制都好,反正浅拷贝的话只要复制顶层节点就OK。
Case closed.
- TestTreeView.rar (40.8 KB)
- 下载次数: 25
发表评论
-
C#的任意类型转换
2010-09-22 19:37 0用之前的恶搞办法制造一个Func<T, U>委托来 ... -
timer与GC
2010-02-25 21:54 0CLR via C# 3rd的第21章讲解了GC相关的内容。其 ... -
CLR中值类型的实现,几个小测试
2009-12-07 17:35 0http://blogs.msdn.com/clrcodege ... -
Array.Copy()
2009-12-02 23:03 0using System; namespace Cons ... -
关于GC.KeepAlive()
2009-12-01 23:16 0调用GC.KeepAlive()确实跟调用自己写的NoInli ... -
native code一样的方法就是一样的么?
2009-10-10 11:42 0GC map EH SOS -
SRE里的Builder系列到Info系列的转换
2009-09-23 03:01 1697如果你试用(没错字,我就是说“试用”而不是“使用”)过Syst ... -
反射还真会挂……
2009-09-22 22:44 3075呃,CLR的反射也可以注入字符串……看来这里也有可玩的突破口 ... -
CLI中方法的局部变量声明
2009-09-15 10:36 0.locals init( int32 val ... -
要让CLR挂掉的话(第二弹)……
2009-09-04 03:26 12870(Disclaimer:如果需要转 ... -
要让CLR挂掉的话……
2009-09-02 16:53 4776(Disclaimer:如果需要转载请先与我联系。 作者:Re ... -
JIT与观察调用栈
2009-07-04 03:53 0Massimiliano Mantione在他的Chasing ... -
CLR上的接口调用也是在运行时检查的
2009-06-02 17:14 2688作者:RednaxelaFX 主页:http://rednax ... -
值类型上的实例方法
2009-05-29 22:15 0.NET里任何实例方法都有一个隐含的this作为第一个参数,无 ... -
call与callvirt、虚方法与非虚方法的组合
2009-05-29 21:31 0Chris Brumme: Virtual and non-v ... -
CLR 2.0的callsite caching
2009-05-29 01:52 0根据http://blogs.msdn.com/vancem/ ... -
.NET中各种黑历史般的名字
2009-05-24 04:29 0dotnetfx: .NET Frameworks COM+ ... -
.NET 4的新动向
2009-05-23 19:58 0http://weblog.ikvm.net/PermaLin ... -
.NET Framework 4 Beta 1与对应的IronPython 2.6的下载
2009-05-21 02:43 1811与先前报导的一致,微软在今天放出了.NET Framework ... -
自己关于VM的帖的目录
2009-04-07 14:02 69499JavaEye的blog系统只允许把帖放到单一类别下,而不能用 ...
相关推荐
本篇文章将详细探讨如何实现C# `TreeView`控件的右键菜单功能,包括编辑树节点、增加新节点、删除节点以及复制和粘贴节点。 首先,让我们了解`TreeView`的基本操作。在C#中,`TreeView`控件可以通过`System.Windows...
Winform的Treeview控件提供了丰富的事件,如`AfterSelect`、`BeforeExpand`、`BeforeClick`等,这些事件可以用于处理用户交互,比如添加、删除、复制节点,或者显示与节点相关的详细信息。 6. **数据绑定** 考虑...
- 调用`Deserialize`方法,将XML文件内容转换回`TreeViewData`对象。 - 使用`TreeViewData`对象的`PopulateTree`方法填充`TreeView`控件。 这里需要注意的是,由于`TreeNode.Tag`可能包含不可序列化的对象,因此...
在许多应用场景中,我们可能需要实现`TreeView`的拖放(Drag & Drop)功能,使得用户可以自由地调整节点的顺序,或者进行数据的移动和复制。`WPF DragDropTreeView`就是一个专门针对这个需求的实现,它扩展了原生的`...
C#TreeView控件转存XML加载XML利用Helper 此窗体有两个TreeView 一键复制TreeView1 到 TreeView2 而且保留tree1中的的image 存储xml 加载xml 清除node 加载treeview 用到了tag,selectimage等参数
在Windows Presentation Foundation (WPF) 中,`TreeView`控件是一种常见的用户界面元素,用于展示层级结构的数据。本文将深入探讨如何实现`TreeView`中节点的拖拽功能,允许用户通过拖放操作来改变节点的位置,从而...
在Windows应用程序开发中,`TreeView`控件常用于呈现层次结构的数据,比如文件系统或组织结构。本项目实现了`TreeView`节点的拖放(Drag and Drop)功能,这对于用户交互和数据操作非常实用。以下是对这个实现的详细...
在VB.NET编程中,TreeView控件是一个非常常用且功能强大的组件,它用于显示层次结构的数据,比如文件系统、组织结构或者数据库记录等。本篇文章将深入探讨如何在VB.NET中进行TreeView节点的添加和删除操作。 一、...
本主题将深入探讨如何在C#中实现`TreeView`控件的多个子节点剪切、复制以及拖拽功能。 首先,要实现树形菜单的剪切和复制功能,我们需要利用`TreeView`控件的事件系统。`TreeView`控件有两个关键的事件:`MouseDown...
6. **自定义行为**:开发者可以扩展TreeView控件的行为,比如添加右键菜单,实现拖放功能,或者在节点间进行复制和剪切操作。 7. **多选模式**:通过设置`CheckBoxes`属性,可以启用复选框功能,让用户能够选择多个...
在本实例中,我们探讨的是如何利用TREEVIEW控件实现查询、复制和删除等功能,这对于构建用户友好的文件管理器或者系统设置界面非常有用。 1. **TREEVIEW控件基础** TREEVIEW控件在Windows API中被称作`TVS`(Tree-...
2. **处理DragEnter事件**:当鼠标进入`TreeView`控件时,触发`DragEnter`事件,此时你可以检查拖放的数据是否合法,并根据需要设置`DragEffect`属性,以指示用户可以执行的操作(如移动或复制节点)。 3. **处理...
7. **交互增强**:为了提供更好的用户体验,可以添加更多的交互特性,如右键菜单,支持复制、粘贴、删除等操作,或者添加搜索功能,允许用户快速查找特定的文件或目录。 8. **错误处理**:在处理文件系统操作时,...
在Windows应用程序开发中,`TreeView`控件常用于构建层级结构的数据展示,如文件系统、组织结构等。本文将深入探讨如何实现`TreeView`节点拖拽(DragDrop)时带有Image dragging的动画效果,这对于提升用户体验和...
这个标题"“C#TreeView将左侧数据添加到右侧树视图”"暗示了一个典型的操作:从一个`TreeView`(左侧)选择节点后,将其内容或相关信息添加到另一个`TreeView`(右侧)。这个过程涉及到多个关键知识点,包括`...
这些处理程序将根据用户的菜单选择执行相应的操作,如添加节点、删除节点、复制或剪切选中的项。 4. **获取选中项**:在`TreeView`中,你需要获取`TreeNode`对象来操作。通过`TreeView.SelectedNode`属性可以得到...
拖放(Drag & Drop)功能则为用户提供了一种直观、便捷的操作方式,允许用户通过鼠标拖动来移动或复制数据。本示例将重点介绍如何在DataGrid和TreeView之间实现拖放操作。 首先,我们需要理解.NET Framework提供的...