C# TreeView控件增加节点目录

px880817 2012-10-17 05:35:27
先要实现点击按钮将文本框中的数据添加为TreeView控件的选中节点的子节点,在添加之前先判断文本框中内容是否存在,存在则出现提示,不存在则添加
关于判断文本框中内容是否存在的部分已完成,但节点如何添加,以及在哪里添加就不知道怎么搞了;具体代码如下;
private void button1_Click(object sender, EventArgs e)
{
string str = textBox1.Text.ToString();
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
{
if (treeView1.Nodes[i].Nodes[j].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复记录!", str));
}
}
if (treeView1.Nodes[i].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复记录!", str));
}
}
}

望各位大虾帮忙指点一下,谢谢!
...全文
449 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhishiheng 2013-05-21
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
每个节点都有Nodes集合,在那里添加 treeView1.SelectedNode.Nodes.Add
还是版主给力 我会乱说
Pigeon汪 2012-10-19
  • 打赏
  • 举报
回复
不明白你说的是什么意思,我猜测你的意思,应该这样写:

TreeNode tn_FirstTreeNode = null; //第一级父节点

if (TreeView1.SelectedNode != null) //判断当前是否有节点被选中
{
if (TreeView1.SelectedNode.Level == 0) //判断当前所选的节点是不是第一级父节点
{
tn_FirstTreeNode = TreeView1.SelectedNode;
}
else if (TreeView1.SelectedNode.Level > 0)
{
for (int i = 0; i < TreeView1.SelectedNode.Level; i++)
{
if (i == 0)
{
tn_FirstTreeNode = TreeView1.SelectedNode.Parent;
}
tn_FirstTreeNode = tn_FirstTreeNode.Parent;
}
}
}

if (tn_FirstTreeNode != null)
{
tn_FirstTreeNode.Nodes.Add("str");
}
px880817 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

private void button1_Click(object sender, EventArgs e)
{
string str = textBox1.Text.ToString();
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
for (int j = 0; j < treeView1.Nodes[i]……
[/Quote]
可以正常添加记录,但还是有一个小问题:如果存在2个或以上的父节点,我用鼠标选择第2或第3个父节点,输入一条新纪录,点击按钮记录会自动添加到第1个父节点的目录下,而不是我要求的第2或第3个父节点?
像这种情况有没有什么办法去判断所添加的父节点目录是否是所选中的呢?
Pigeon汪 2012-10-19
  • 打赏
  • 举报
回复
看红色代码!
Pigeon汪 2012-10-19
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
string str = textBox1.Text.ToString();
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
{
if (treeView1.Nodes[i].Nodes[j].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复记录!", str));
return;
}

if(j==(treeView1.Nodes[i].Nodes.Count-1))
{
treeView1.Nodes[i].Add(str);
}

}
if (treeView1.Nodes[i].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复记录!", str));
return; }
}
if(i==(treeView1.Nodes.Count-1))
{
treeView1.Nodes.Add(str);
}
}
px880817 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C# code

TreeNode chuan=new TreeNode( "父 ");//构造父结点
this.treeView1.Nodes.Add(chuan);//添加父结点
TreeNode node1=new TreeNode( "子一 ");//构造子结点
TreeNode node2=new TreeNode( "子二 ");
TreeNode ……
[/Quote]
你的这个办法是需要先在Form_Load中将TreeView控件的所有节点全部固定,然后再选择哪个子节点中添加记录?
如果完全不知道有多少个父节点以及每个父节点的子节点的情况呢? 正阳该怎么去判断是哪个节点被选中?
px880817 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

每个节点都有Nodes集合,在那里添加

treeView1.SelectedNode.Nodes.Add
[/Quote]
我知道使用selectNode,但我在程序中使用了for语句,如果使用seleNode就会出现添加多条记录的情况
我现在就想知道,如何在判断没有重复记录的情况下添加子节点?
px880817 2012-10-19
  • 打赏
  • 举报
回复
像你所说的那样改了一下,发现又出现了一个新问题:选中子节点后点击按钮,但不知道为什么就是没反应(也没报错),逐语句调试了一下发现自己点的添加记录的语句根本就没有执行到;能帮我看下是哪里的问题吗?在线等.
具体代码如下:

private void button1_Click(object sender, EventArgs e)
{
string str = textBox1.Text.ToString();
try
{
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
{
if (treeView1.SelectedNode.Level>0)
{
if (treeView1.Nodes[i].Nodes[j]==treeView1.SelectedNode)
{
if (treeView1.Nodes[i].Nodes[j].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复添加!", str));
return;
}
if (j == (treeView1.Nodes[i].Nodes.Count - 1))
{
treeView1.Nodes[i].Nodes.Add(str);
}
}
}
}

if (treeView1.SelectedNode.Level==0)
{
if (treeView1.Nodes[i].Text.ToString() == str)
{
MessageBox.Show(string.Format("记录 {0} 已存在,不能重复添加!", str));
return;
}
if (i == (treeView1.Nodes.Count - 1))
{
treeView1.Nodes.Add(str);
}
}
}
}
catch (Exception er)
{
MessageBox.Show(string.Format("报错:\r\n {0}", er));
}
}
easonworld 2012-10-18
  • 打赏
  • 举报
回复
文本框中内容存在,并且成为你选中节点的子节点:
TreeNode FNode;假设FNode是你选中的那个节点
TreeNode SubNode1 = new TreeNode(“文本框内内容,就是你的str变量”)
FNode.nodes.add(SubNode1)
bdmh 2012-10-18
  • 打赏
  • 举报
回复
每个节点都有Nodes集合,在那里添加

treeView1.SelectedNode.Nodes.Add
心灵彩虹 2012-10-18
  • 打赏
  • 举报
回复
别忘记结贴。
心灵彩虹 2012-10-18
  • 打赏
  • 举报
回复

TreeNode chuan=new TreeNode( "父 ");//构造父结点
this.treeView1.Nodes.Add(chuan);//添加父结点
TreeNode node1=new TreeNode( "子一 ");//构造子结点
TreeNode node2=new TreeNode( "子二 ");
TreeNode node3=new TreeNode( "子三 ");
chuan.Nodes.Add(node1);//把子结点添加给父结点
chuan.Nodes.Add(node2);
chuan.Nodes.Add(node3);

结点名称从数据中获取,绑定数据库自己实现。

110,538

社区成员

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

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

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