日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

treeview托拽和动态添加节点以及treeview和xml的交互的实现

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 treeview托拽和动态添加节点以及treeview和xml的交互的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????????前兩天被winform的treeview搞暈了,現在終于有時間了,把自己用到的知識簡單的寫出來。供和我一樣初用winform 的treeview的同志批評指正。
????????一。treeview的托拽的實現(樹與樹之間的):
??????????? 首先,你要兩棵樹了,以treeview1和treeview2來說。設置其allowdrop屬性為true。
?????????????? 添加拖拽函數

private?void?treeView_ItemDrag(object?sender,?System.Windows.Forms.ItemDragEventArgs?e)
????????
{
????????????DoDragDrop(e.Item,?DragDropEffects.Move);?
????????}


????????
private?void?treeView_DragEnter(object?sender,?System.Windows.Forms.DragEventArgs?e)
????????
{
?????????e.Effect?
=?DragDropEffects.Move;
????????}


????????
private?void?treeView_DragDrop(object?sender,?System.Windows.Forms.DragEventArgs?e)
????????
{
????????????TreeNode?NewNode;?
????????????
if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode",?false))?
????????????
{
????????????????Point?pt?
=?((TreeView)sender).PointToClient(new?Point(e.X,?e.Y));
????????????????TreeNode?DestinationNode?
=?((TreeView)sender).GetNodeAt(pt);?
????????????????NewNode?
=?(TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");?
????????????????
if(DestinationNode.TreeView?!=?NewNode.TreeView)?
????????????????
{
????????????????????DestinationNode.Nodes.Add((TreeNode)?NewNode.Clone());
????????????????????DestinationNode.Expand();?
????????????????}
?
????????????}
?
????????}

這是實現拖拽在主要代碼,接下來就是初始化的時候構造幾個節點,在form的page_load函數里加入

private?void?my1_Load(object?sender,?System.EventArgs?e)
????????
{????????
????????????TreeNode?ParentNode1;?
????????????TreeNode?ParentNode2;?
????????????ParentNode1?
=?treeView1.Nodes.Add("WTS");?
????????????ParentNode2.Tag?
=?"";
????????????ParentNode1.Nodes.Add(
"WTS1");?
????????????ParentNode1.Nodes[
0].Tag?=?"";
????????????ParentNode1.Nodes.Add(
"WTS2");????
????????????ParentNode1.Nodes[
1].Tag?=?"";
????????????ParentNode1.Expand();?
????????????ParentNode2?
=?treeView2.Nodes.Add("wts");
????????????ParentNode2.Tag?
=?"";
????????????ParentNode2.Nodes.Add(
"wts1");?
????????????ParentNode2.Nodes[
0].Tag?=?"";
????????????ParentNode2.Nodes.Add(
"wts2");?
????????????ParentNode2.Nodes[
1].Tag?=?"";
????????????ParentNode2.Expand();?
????????????
this.treeView1.ItemDrag?+=?new?System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);?
????????????
this.treeView2.ItemDrag?+=?new?System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);?
????????????
this.treeView1.DragEnter?+=?new?System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);?
????????????
this.treeView2.DragEnter?+=?new?System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);?
????????????
this.treeView1.DragDrop?+=?new?System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);?
????????????
this.treeView2.DragDrop?+=?new?System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);?
????????}

就可以了。
?? 二。動態添加節點及和XML交互。
?????????? 這個方法很多,這里就不多介紹,貼出部分代碼,請批評指正:

創建根節點#region?創建根節點
????????
private?TreeNode?CreateNewNode()
????????
{
????????????TreeNode?node?
=?new?TreeNode(this.txtTitle.Text.Trim());
????????????node.Tag?
=?"";
????????????
return?node;
????????}

????????
#endregion
?
????????
從XML中得到數據#region?從XML中得到數據
????????
private?void?GetDataFromXML?()
????????
{
????????????
//從XML中讀取數據到TreeView????????????
????????????try
????????????
{
????????????????XmlDocument?xmlDoc?
=?new?XmlDocument();
????????????????xmlDoc.Load(
"Menu.xml");

????????????????XmlNodeList?xmlNodes?
=?xmlDoc.DocumentElement.ChildNodes;

????????????????
this.treeView1.BeginUpdate();
????????????????
this.treeView1.Nodes.Clear();
????????????????XmlNodeToTreeNode(xmlNodes,?
this.treeView1.Nodes);
????????????????
this.treeView1.EndUpdate();
????????????}

????????????
catch
????????????
{
????????????}

????????????
????????}

????????
#endregion
?
????????
向XML中寫數據#region?向XML中寫數據
????????
private?void?InsertDataIntoXML?()
????????
{
????????????
//將TreeView保存到XML文件中????????????
????????????XmlDocument?doc?=?new?XmlDocument();
????????????doc.LoadXml(
"<Menu></Menu>");
????????????XmlNode?root?
=?doc.DocumentElement;
????????????doc.InsertBefore(doc.CreateXmlDeclaration(
"1.0",?"utf-8",?"yes"),?root);
????????????TreeNodeToXml(
this.treeView1.Nodes,?root);
????????????doc.Save(
"Menu.xml");
????????}

????????
#endregion
?
????????
TreeNodeToXml#region?TreeNodeToXml
????????
private?void?TreeNodeToXml(TreeNodeCollection?treeNodes,?XmlNode?xmlNode)
????????
{
????????????XmlDocument?doc?
=?xmlNode.OwnerDocument;
????????????
foreach?(TreeNode?treeNode?in?treeNodes)
????????????
{
????????????????XmlNode?element?
=?doc.CreateNode("element",?"Item",?"");
????????????????XmlAttribute?attr?
=?doc.CreateAttribute("WTS");
????????????????treeNode.Tag?
="";
????????????????attr.Value?
=?treeNode.Text;
????????????????element.Attributes.Append(attr);
????????????????element.AppendChild(doc.CreateCDataSection(treeNode.Tag.ToString()));
????????????????xmlNode.AppendChild(element);

????????????????
if?(treeNode.Nodes.Count?>?0)
????????????????
{
????????????????????TreeNodeToXml(treeNode.Nodes,?element);
????????????????}

????????????}

????????}

????????
#endregion
?
????????
XmlNodeToTreeNode#region?XmlNodeToTreeNode
????????
private?void?XmlNodeToTreeNode(XmlNodeList?xmlNode,?TreeNodeCollection?treeNode)
????????
{
????????????
foreach?(XmlNode?var?in?xmlNode)
????????????
{
????????????????
if?(var.NodeType?!=?XmlNodeType.Element)
????????????????
{
????????????????????
continue;
????????????????}

????????????????TreeNode?newTreeNode?
=?new?TreeNode();
????????????????newTreeNode.Text?
=?var.Attributes["WTS"].Value;????????????
????????????????
if?(var.HasChildNodes)
????????????????
{
????????????????????
if?(var.ChildNodes[0].NodeType?==?XmlNodeType.CDATA)
????????????????????
{
????????????????????????newTreeNode.Tag?
=?var.ChildNodes[0].Value;
????????????????????}


????????????????????XmlNodeToTreeNode(var.ChildNodes,?newTreeNode.Nodes);
????????????????}

????????????????treeNode.Add(newTreeNode);
????????????}

????????}

????????
#endregion
?XmlNodeToTreeNode

?

當添加了這些函數,接下來就是調用的問題了。

?? 這些是一些比較笨的方法,并且沒有加異常處理另外考慮在也不全面,希望看到的,有好方法的不吝指教!謝謝!

轉載于:https://www.cnblogs.com/wts/archive/2007/03/26/688760.html

總結

以上是生活随笔為你收集整理的treeview托拽和动态添加节点以及treeview和xml的交互的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 闷骚老干部cao个爽 av九九九 | 婷婷视频在线 | 亚洲一区二区免费视频 | 草久久免费视频 | 丰满孕妇性春猛交xx大陆 | 欧美网站在线观看 | 亚洲欧美日本另类 | 污到下面流水的视频 | 亚洲精品18p | 久草午夜 | 久久一| 日韩av一| 五月激情开心网 | 综合av| 欧美精品一区二区三区四区五区 | 少妇视频一区二区三区 | 91精品91久久久中77777老牛 | 中文字幕在线免费 | 久久艹精品| 久久三级视频 | 一级少妇女片 | 亚洲高清在线观看视频 | 欧美体内she精高潮 日韩一区免费 | 狠狠狠狠狠 | 91嫩草欧美久久久九九九 | 高清中文字幕在线a片 | 二区三区免费 | 一区二区三区四区精品 | 人妻夜夜爽天天爽三区麻豆av网站 | 青青草激情视频 | 四虎在线网址 | 超碰caopor| 久久午夜夜伦鲁鲁一区二区 | 亚洲欧美另类激情 | 国产精品99久久久久久人 | 国产精品一区一区三区 | 青青草.com| 中文在线国产 | 国产精品嫩 | 日韩无码精品一区二区 | 国产精品一区在线观看你懂的 | 黄色特级一级片 | 亚洲天堂91 | 久久妇女 | free性娇小hd第一次 | 欧美经典一区二区 | 精品国语对白 | 美女无遮挡免费网站 | 一级黄色片在线观看 | 69性视频 | 一区二区精品视频 | 黄在线观看 | 伊人365影院| 免费日批网站 | 中文字幕国产在线观看 | 成人福利网站在线观看 | 中文字幕一区二区久久人妻 | 国产一区日韩一区 | 漂亮人妻洗澡被公强 日日躁 | 黄色片一区二区三区 | 日韩人妻无码一区二区三区99 | 奇米网888 | 波多野结衣人妻 | 中文精品无码中文字幕无码专区 | 日韩精品久久一区二区 | 亚洲永久精品在线观看 | 日本a在线天堂 | 一级大毛片 | 久久精品久久精品久久精品 | 亚洲男人的天堂网站 | 亚洲国产999 | 在线观看成人小视频 | 亚洲熟妇av乱码在线观看 | 新红楼梦2005锦江版高清在线观看 | 成人看片网站 | av加勒比在线 | 影音先锋亚洲精品 | 三区在线观看 | 久久综合一本 | 日韩午夜电影网 | 久久日视频 | 国产一线天粉嫩馒头极品av | 一区二区日本 | 亚洲欧美日本一区 | 日韩插插插 | 久久久久亚洲av成人网人人网站 | 捆绑调教sm束缚网站 | 精品美女在线观看 | 国产91在线播放 | 亚洲女人被黑人巨大进入 | 日本高清视频免费看 | 黄色污污网站 | 国产麻豆一区二区 | 一本一道久久a久久精品蜜桃 | 免费拍拍拍网站 | 成人三级电影网站 | 91网站观看 | 免费久久av | 国产日韩欧美精品一区二区 |