Treeview中所有节点的TAG值为什么重复
Treeview中所有节点的TAG值为何重复
大家好,有个关于Treeview节点的TAG的问题请教:
定义了一个类,如下:
public class TreeNodeTag
{
public Int16 tree_level; // 节点级别
public string tn_name; // 节点名,即程序名称,用于启动程序
public string tn_type; // 节点类型
public string tn_caption; // 节点显示标题
};
有个TREEVIEW控件名为tvwSys,在初始化时,为此TREEVIEW添加节点,代码如下:
private void FrmControl_Load(object sender, EventArgs e)
{
TreeNodeTag tvn_s = new TreeNodeTag();
/// 为Treeview控件添加3个根节点
TreeNode tn1 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "NOVEL";
tvn_s.tn_caption = "小说";
tn1.Name = "NOVEL";
tn1.Text = "小说";
tn1.Tag = tvn_s; // 把类赋值给节点2的TAG
tvwSys.Nodes.Add(tn1);
TreeNode tn2 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "MOVIE";
tvn_s.tn_caption = "电影";
tn2.Name = "MOVIE";
tn2.Text = "电影";
tn2.Tag = tvn_s;
tvwSys.Nodes.Add(tn2); // 把类赋值给节点的TAG
TreeNode tn3 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "IT";
tvn_s.tn_caption = "IT";
tn3.Name = "IT";
tn3.Text = "IT";
tn3.Tag = tvn_s;
tvwSys.Nodes.Add(tn3); // 把类赋值给节点3的TAG
}
在鼠标点击事件中的代码 如下
private void tvwSys_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode tr = new TreeNode();
tr = tvwSys.SelectedNode;
//object Ttag = tvwSys.SelectedNode.Tag; //获取TAG的值到对象tvn_tag中
TreeNodeTag Ttag = tr.Tag as TreeNodeTag; //获取TAG的值到对象tvn_tag中
MessageBox.Show(Ttag.tn_caption);
}
但是,在鼠标点击节点时,无论点击哪个节点,消息框弹出TAG节点标题,均是最后一个节点的TAG的标题“IT”。
请问这是为何?谢谢!
------解决思路----------------------
tvn_s = new TreeNodeTag();
添加到每个tvn_s.tree_level = 1;之前。
大家好,有个关于Treeview节点的TAG的问题请教:
定义了一个类,如下:
public class TreeNodeTag
{
public Int16 tree_level; // 节点级别
public string tn_name; // 节点名,即程序名称,用于启动程序
public string tn_type; // 节点类型
public string tn_caption; // 节点显示标题
};
有个TREEVIEW控件名为tvwSys,在初始化时,为此TREEVIEW添加节点,代码如下:
private void FrmControl_Load(object sender, EventArgs e)
{
TreeNodeTag tvn_s = new TreeNodeTag();
/// 为Treeview控件添加3个根节点
TreeNode tn1 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "NOVEL";
tvn_s.tn_caption = "小说";
tn1.Name = "NOVEL";
tn1.Text = "小说";
tn1.Tag = tvn_s; // 把类赋值给节点2的TAG
tvwSys.Nodes.Add(tn1);
TreeNode tn2 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "MOVIE";
tvn_s.tn_caption = "电影";
tn2.Name = "MOVIE";
tn2.Text = "电影";
tn2.Tag = tvn_s;
tvwSys.Nodes.Add(tn2); // 把类赋值给节点的TAG
TreeNode tn3 = new TreeNode();
tvn_s.tree_level = 1;
tvn_s.tn_name = "IT";
tvn_s.tn_caption = "IT";
tn3.Name = "IT";
tn3.Text = "IT";
tn3.Tag = tvn_s;
tvwSys.Nodes.Add(tn3); // 把类赋值给节点3的TAG
}
在鼠标点击事件中的代码 如下
private void tvwSys_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode tr = new TreeNode();
tr = tvwSys.SelectedNode;
//object Ttag = tvwSys.SelectedNode.Tag; //获取TAG的值到对象tvn_tag中
TreeNodeTag Ttag = tr.Tag as TreeNodeTag; //获取TAG的值到对象tvn_tag中
MessageBox.Show(Ttag.tn_caption);
}
但是,在鼠标点击节点时,无论点击哪个节点,消息框弹出TAG节点标题,均是最后一个节点的TAG的标题“IT”。
请问这是为何?谢谢!
------解决思路----------------------
tvn_s = new TreeNodeTag();
添加到每个tvn_s.tree_level = 1;之前。