标题:又是一个关于treeview的问题
只看楼主
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
 问题点数:0 回复次数:11 
又是一个关于treeview的问题
我的应用程序,允许用户添加新的节点。但是在同一个根节点下,不允许有同名的节点。
这个函数因该怎么编写??
搜索更多相关主题的帖子: treeview 
2006-03-02 15:39
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
得分:0 

循环检查此节点的父节点的所有子节点是否有这个名称的
如果增加的是根一级的节点就检查一下根一级的节点是否有这个名称的


2006-03-02 15:49
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 

我知道啊。代码应该怎么写呢?
我对很多的属性和方法都不熟悉。

2006-03-02 16:06
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
得分:0 
private bool HasTheSameNameNode(string name)
//返回false时允许添加结点,返回true时则不允许,参数为要添加的节点名字
{
if(this.treeView1.SelectedNode==null)
{
return true;//没有选中任何节点
}
if(this.treeView1.SelectedNode.Parent==null)
{
//为根一级的结点
TreeNode tn=this.treeView1.Nodes[0];//获取树的首结点
while(true)
{
if(tn.Text==name)
{
return true;
}
tn=tn.NextNode;
if(tn==null)
{
return false;
}
}

}
else
{
//子一级的结点
TreeNode FatherNode=this.treeView1.SelectedNode.Parent;
foreach(TreeNode tn in FatherNode.Nodes)
{
if(tn.Text==name)
{
return true;
}
}
return false;
}

}

2006-03-02 23:04
adamaya
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-2-19
得分:0 
受教,顶一个
2006-03-03 15:09
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 
多谢了,我去试一下
2006-03-07 08:57
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 

月夜你好
程序在增加根节点那段tn=tn.NextNode;处,回报错;如下:
其他信息: 未将对象引用设置到对象的实例。怎么回事??

2006-03-07 11:41
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 

又修改了一下。结果TreeNode tn=this.treeView1.Nodes[0];//获取树的首结点
在该行。报错指定参数超出有效范围。我的代码如下
private bool check_root_is_existed(string newnodename)
{
if (this.treeView1.Nodes==null)
return false;
else
{
TreeNode tn=this.treeView1.Nodes[0];
newnodename=this.textBox1.Text.Trim();
while(true)
{
if(tn.Text==this.textBox1.Text.Trim())
return true;
tn=tn.NextNode;
if (tn==null)
return false;
}
}

}

2006-03-07 11:58
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 
好了,已经弄好了。:)
2006-03-07 12:15
laplas
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-2-28
得分:0 
晕了,又处问题了。
我写的函数,为了检查本级目录是否有重名的。如下
private bool check_this_is_existed(string newnodename)
{
TreeNode ptn=this.treeView1.SelectedNode.Parent;
foreach (TreeNode tn in ptn.Nodes)
{
if (tn.Text==this.textBox1.Text.Trim())
{
MessageBox.Show("该名称已经存在","错误");
return true;
}
}
return false;
}
在ptn.Nodes处报错了 其他信息: 未将对象引用设置到对象的实例。
2006-03-07 12:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-48017-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.116551 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved