C# treeview 实现选取并复制功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# treeview 实现选取并复制功能相关的知识,希望对你有一定的参考价值。

在C# Winform应用程序中,加入一个treeview控件,在节点显示成功后,如何实现 像文本编辑器中那样通过按住鼠标左键选取范围,并复制该范围内的节点名称,从而可以将选取范围内的节点名称复制其他文本编辑器中,例如word中。
我的开发环境是VS.2008
atalentsoft :
即使按照你的方法重写了treeview控件,也只是实现了选择功能,也不能实现通过(Ctrl+C Ctrl+V)将节点名称粘贴到word中啊

TreeView默认不能多选的,要想实现只能自己做OwnerDrawn控件
ListView可以多选

自己自定义一个类,继承TreeView类
在构造函数里
把DrawMode改成OwnerDrawn

建立自己的一个集合来存储选中的Node,
public List<TreeNode> SelectedNodes

改写OnMouseMove函数,确定e.Button == MouseButtons.Left并作矩形

改写OnPaint函数,随着鼠标移动,调用Invalidate(),强制刷新

利用HitTest(Rectangle.Contrains())来循环Nodes,判断进入矩形的Node,然后,把他们加入SeletedNodes

建立DrawNode函数,来把所有SelectedNode的背景填充,用e.Graphics.FillRectangle(e.Bounds) ,

基本上就这样 曾经做过一个 现在代码没了 也记得不太清了 只能给你说这么多了
参考技术A 试试第三方控件吧
http://www.componentsource.com/products/netadvantage-net/index-zh-cny.html
参考技术B 无法达到你要的效果。你可以看看Windows我的电脑里面对文件夹的TreeView,那个没有的功能,C# Winform 的treeview就基本都无法实现 参考技术C ♡ 期待ing

c# treeview控件 点击根节点后展开相应的子节点,如何实现

说的详细点,最好能把关键代码写出来

参考技术A public static string parentid = "";
protected void Page_Load(object sender, EventArgs e)

if (!IsPostBack)

if (parentid != "")

TreeNode tn = TreeView1.FindNode(parentid);
tn.ExpandAll();



protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)

parentid = TreeView1.SelectedNode.Parent.ValuePath; //取父节点的路径,用於保存状态,,,展开节点。
本回答被提问者采纳
参考技术B private System.Windows.Forms.TreeView tv_Demo;//声明
tv_Demo.Click += new System.EventHandler(tv_Demo_Click);/*绑定单击事件*/
//单击事件响应函数
private void tv_Demo_Click(object sender, EventArgs e)

string nodeText=tv_Demo.SelectedNode.Text;/*获得子节点的名称*/
参考技术C <asp:TreeNode Expanded="False" SelectAction="Expand" Text="电子刊物" Value="1111d" ImageUrl="~/images/menu/file_folder.gif">
<asp:TreeNode ImageUrl="~/images/menu/file_folder.gif" Text="<a href='MyAffairs/MyElecBook.aspx ' target='rform' onclick='parent.UploadComplete();'>电子刊物浏览</a>" Value="1111d1" SelectAction="None">
</asp:TreeNode>
<asp:TreeNode ImageUrl="~/images/menu/file_folder.gif" Text="<a href='MyAffairs/ElecBook.aspx ' target='rform' onclick='parent.UploadComplete();'>电子刊物管理</a>" Value="1111d2" SelectAction="None">
</asp:TreeNode>
</asp:TreeNode>
看看这个实例对你有帮助没!
参考技术D 响应选择更改事件,调用expand方法

以上是关于C# treeview 实现选取并复制功能的主要内容,如果未能解决你的问题,请参考以下文章

C# TreeView 拖拽节点到另一个容器Panel中简单实现

怎样实现TreeView的TreeNode拖动功能,以调整TreeNode的顺序?(C#)

C#中,TreeView 拖拽时,获取被拖拽的节点

WinForm实现简单的拖拽功能(C#)

C# winform treeview

c#如何获取鼠标选取的内容