TreeNode Tag 赋值问题! 保存的值都是一样?

tank2254 2014-07-14 01:23:04

public class UserInfo //我自己定义了一个类, 将来赋值给Tag
{
private string id;
public string ID
{
set { id = value; }
get { return id; }
}
private string password;
public string PassWord
{
set { password = value; }
get { return password; }
}
}
public void LoadXmlFileInTreeView(TreeView treeView, string fileName)
{
XmlTextReader reader = null;
TreeNode n = null;

reader = new XmlTextReader(fileName);
n = new TreeNode(Path.GetFileNameWithoutExtension(fileName));
treeView.Nodes.Add(n);

UserInfo userid= new UserInfo(); //自己定义的类,要赋值给Tag

while(reader.Read())
{

if(reader.NodeType == XmlNodeType.Element)
{
bool isEmptyElement = reader.IsEmptyElement;
StringBuilder text = new StringBuilder();
text.Append(reader.Name);
int attributeCount = reader.AttributeCount;

if(attributeCount > 0)
{
text.Append("");
for(int i = 0; i < attributeCount; i++)//给UserInfo 赋值
{
if(i!=0) text.Append(", ");
reader.MoveToAttribute(i);
if (reader.Name == "ID")
userid.ID = reader.Value;

else if((reader.Name == "PassWord"))
userid.PassWord = reader.Value;

}
text.Append("");
}
}
..........................
..........................
else if(reader.NodeType == XmlNodeType.Text)//UserInfo保存到Tag中
{
n = n.Nodes.Add(reader.Value);
n.Tag = userid; //问题出在这里, 为什么所有的Tag储存的值都是同样的啊?
//Tag里要存储不同的用户信息, 好像Tag的值随着UserInfo类变化,
//但UserInfo写入下一条信息的时候,上次赋值的Tag也跟着变化,
}

}


treeView.ExpandAll();
reader.Close();
}

这个要怎么解决啊?
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0118 2014-07-14
  • 打赏
  • 举报
回复
没有实例化新的Userinfo出来,要重新New出来。
exception92 2014-07-14
  • 打赏
  • 举报
回复
既然是while,就要每次循环都要实例化UserInfo对象,再对其Tag赋值。代码中你只new了一次。
bdmh 2014-07-14
  • 打赏
  • 举报
回复
UserInfo userid= new UserInfo()这个值的获取在while循环外,所以循环内部你只有在 if 条件中才对userid进行了赋值,而在else代码里,没有获取新的userid,所以都是 一样的
gomoku 2014-07-14
  • 打赏
  • 举报
回复
把new UserInfo挪到循环里面(UserInfo是引用类型,每次new一个才会不一样):
while(reader.Read())
{
      UserInfo userid= new UserInfo(); //自己定义的类,要赋值给Tag

110,535

社区成员

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

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

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