首页 新闻 搜索 专区 学院

C#中添加标签问题

0
悬赏园豆:5 [已解决问题] 解决于 2014-07-22 16:00

  VS2010里创建了个窗口项目,用于处理XML文件,希望能够在遍历到的每一个节点上都添加一个标签,用于对节点进行编号,我想问怎么添加这样的标签。

Trey的主页 Trey | 初学一级 | 园豆:182
提问于:2014-07-22 14:33
< >
分享
最佳答案
0

你需要“编号”用来做什么?

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2014-07-22 14:37

编号是为了确定节点在XML树结构中的 具体位置。

Trey | 园豆:182 (初学一级) | 2014-07-22 14:39

@Trey: 那你需要这个“具体位置”用来做什么?

Launcher | 园豆:45045 (高人七级) | 2014-07-22 14:40

@Launcher: 编号的信息有该节点的层级,该节点相对于同胞节点的相对位置,该节点父节点的位置。比如说根节点标记为(0,1,0),第一个0表示层级0,1表示该层排在第一个,因为其没有父节点,所以父节点位置为0;标记信息记录了每一个节点在树结构中的完整信息,讲XML映射到关系型数据库中,不会丢失其原有信息。我最终目的就是为了将XML映射到数据库中,现在是想标记每个节点的具体信息。我知道C# winform里可以添加标签控件,我想问的就是能不能在遍历到具体节点的同时添加一个标签,并标记。

Trey | 园豆:182 (初学一级) | 2014-07-22 14:48

@Trey: 其实我一直有个问题,因为我没看明白你这里的“标签”到底是个什么东西?是说你把 XML 文件解析后通过 TreeView 控件显示到界面上了,然后你想在 TreeView 控件上给每个节点旁边再显式一个标签控件,其中填写类似“(0,1,0)”这样的文字吗?

Launcher | 园豆:45045 (高人七级) | 2014-07-22 14:51

@Launcher: 我是想添加一个标签控件,其中显示类似(0,1,0)这样的文字。不过我是想对节点添加标签,也就是这个标签就是节点的。因为我在之后将XML映射到数据库时,标签和节点要对应的。

Trey | 园豆:182 (初学一级) | 2014-07-22 14:54

@Trey: 我再说一次,你把 XML 文件解析后显示到 TreeView 控件上,然后在节点处显示形如“(0,1,0)”的字符串,如图:

是这样吗?

Launcher | 园豆:45045 (高人七级) | 2014-07-22 15:01

@Launcher: 是的。这样如何实现?

Trey | 园豆:182 (初学一级) | 2014-07-22 15:02

@Trey: 我先问两个问题:

1、你是如何遍历 XML 文件的?

2、你会使用 TreeView 控件吗?

Launcher | 园豆:45045 (高人七级) | 2014-07-22 15:10

@Launcher: 用递归遍历的。先创建XmlDocument对象,加载XML文档,获得根节点。在利用递归,获取所有节点;  

Treeview控件用过。

Trey | 园豆:182 (初学一级) | 2014-07-22 15:19

@Trey: 那你现在能使用你已经掌握的技术将 XML 文件各节点的内容显示到 TreeView 控件上(类似我图中的样子,不要管 Checkbox 和图标)吗? 如果能,能截图给我看看吗?

Launcher | 园豆:45045 (高人七级) | 2014-07-22 15:21

@Launcher: 

        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(@"E:\XML1.xml");
            XmlElement root = xml.DocumentElement ;
            TreeNode treeroot = new TreeNode(root.Name);
            this.treeView1.Nodes.Add(treeroot);  
            BindTreeView(root, treeroot);
        }
        private void BindTreeView(XmlNode node, TreeNode tn)
        {
            foreach (XmlNode n in node.ChildNodes)
            {
                TreeNode childnode = new TreeNode(n.Name);
                tn.Nodes.Add(childnode);
                if (n.ChildNodes.Count > 0)
                {
                    BindTreeView(n, childnode);
                }
            }
        }

刚做的。

Trey | 园豆:182 (初学一级) | 2014-07-22 15:39

@Trey: 

childnode.Text = string.Format("({0},{1},{2})",childnode.Level,childnode.Index,childnode.Parent.Index);

Launcher | 园豆:45045 (高人七级) | 2014-07-22 15:52

@Launcher: 谢谢。

Trey | 园豆:182 (初学一级) | 2014-07-22 16:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册