为了让大家更容易理解我在问什么,我将写一个完整的过程:
1) 应用启动
2) Button1 被按下:
-用新闻文章标题填充 TreeView1
-将第一个节点添加到变量1
3) Button1 被按下:
-用新文章标题填充 TreeView1
-将第一个节点添加到变量 2
-比较变量 1 和 2,如果它们不同则显示消息框。如果它们相同,则什么也不做。
4) Button1 被按下:
-用新文章标题填充 TreeView1
-将第一个节点添加到变量 3
-比较变量 2 和 3,如果它们不同则显示消息框。如果它们相同,则什么也不做。
等等……
基本上每次按下 button1 时,第一个节点都会存储到新变量中并与前一个变量进行比较。
所以我的问题是:每次按下 button1 时如何将“第一个节点”存储到不同的变量?
提前谢谢大家!
我会建议使用 TreeNode.Tag 属性,因为它就是这样做的。当您用节点填充 TreeView 时,将每个节点的 Tag 属性设置为唯一标识与其关联的新闻文章的内容。我通常将它设置为节点试图表示的对象,在本例中是一篇新闻文章。
private void LoadNewsArticles()
{
List<MyNewsArticle> newsArticles = GetNewsArticles();
foreach(MyNewsArticle a in newsArticles)
{
TreeNode node = new TreeNode(a.Title)
node.Tag = a;
treeView1.Nodes.Add(node);
}
}
然后,当你需要比较节点值时,你可以只看标签。
private MyNewsArticle _currentTopArticle;
private void button1_Click(object sender EventArgs e)
{
LoadNewsArticles();
TreeNode topNode = treeView1.Nodes[0];
MyNewsArticle topArticle = topNode.Tag as MyNewsArticle;
if(topArticle.Equals(_currentTopArticle))
{
// Do something
}
_currentTopArticle = topArticle;
}
请注意,此示例仅跟踪前一篇热门文章,因为您的问题并不表明需要更多。如果您确实需要维护热门文章的完整历史记录,您会想要一个文章列表,并在每次加载时将最新的热门故事推送到上面。