wpf使用treeview怎么建立目录文件夹形式的结构?

博客园铁粉 2014-10-23 05:45:45
如题,需求是这样的:treeview最多只需要两种节点,父节点相当于文件夹(可以有多个父节点,即多个文件夹),每个父节点下可以有多个子节点(子节点相当于在文件夹中存储的内容)。
然后,功能是这样的:可以新建文件夹;可以删除任意子节点和父节点;点击任意子节点后可以变更子节点所在的文件夹,即把选中子节点变更到以图中第二个textbox中内容为名称的文件夹。
...全文
474 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
daxiang_2678047067 2014-10-25
  • 打赏
  • 举报
回复
treeview建立节点添加、修改、删除界面示例 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //调用自定义方法绑定版面信息 BindPageData(); } //为删除按钮添加确认对话框 btnDelete.Attributes.Add("onclick", "return confirm('你确定要删除所选择的版面吗?');"); } //自定义方法BindPageData(),获取论坛版面信息 private void BindPageData() { //实例化公共类Board Board board = new Board(); //调用该类中的CreateHiberarchyTree方法获取TreeView控件中的数据 board.CreateHiberarchyTree(tvBoard, false, false); }//codego.net/tags/1/1/ //自定义DeleteBoard(int boardID)方法删除指定ID值的版面 private void DeleteBoard(int boardID) { if (tvBoard.SelectedNode.ChildNodes.Count > 0) { Dialog.OpenDialog(Response, "要删除的结点包含孩子结点,不能删除,请重新选择结点。"); return; } ///执行删除操作 Board board = new Board(); board.DeleteBoard(boardID); ///重新绑定版面的数据 BindPageData(); } protected void OperationBtn_Command(object sender, CommandEventArgs e) { if (string.IsNullOrEmpty(e.CommandName) == true) return; if (tvBoard.SelectedNode == null) { Dialog.OpenDialog(Response, "请选择操作的节点。"); return; } switch (e.CommandName.ToLower()) { case "add"://添加版面 { Server.Transfer("~/Admin/AddBoard.aspx?BoardID=" + tvBoard.SelectedNode.Value); break; } case "update":// 修改版面 { Server.Transfer("~/Admin/UpdateBoard.aspx?BoardID=" + tvBoard.SelectedNode.Value); break; } case "title": //管理版面帖子 { Server.Transfer("~/Admin/AdminTitleManage.aspx?BoardID=" + tvBoard.SelectedNode.Value); break; } case "delete":// 删除版面 { DeleteBoard(DataTypeConvert.ConvertToInt(tvBoard.SelectedNode.Value)); break; } default: break; } }
exception92 2014-10-24
  • 打赏
  • 举报
回复
提供个思路,使用ObservableCollection 储存你的节点信息,至于你的节点类,可以定义包含 同级上节点,同级下节点,和该节点下的子节点集合(也是ObservableCollection集合);绑定的时候使用HierarchicalDataTemplate 嵌套 节点深度,加载显示; 至于你的变更,选中节点后(也就是获取类对象) ,直接更改它的父节点,再重新加载数据。
E次奥 2014-10-24
  • 打赏
  • 举报
回复
就是简单的递归显示啊,点击判断当前项是集合还是文件,集合展开,文件打开,修改玩保存;
於黾 2014-10-24
  • 打赏
  • 举报
回复
引用 2 楼 wangye380 的回复:
删完,重新绑定,刷新。 改完,重新绑定,刷新。
这是最简单的方法, 不要纠结怎么不改动整个结构,而只对某一个节点操作, 1.很麻烦 2.没必要
埋头苦练 2014-10-24
  • 打赏
  • 举报
回复
删完,重新绑定,刷新。 改完,重新绑定,刷新。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧