新手求教TreeView控件问题

dragon_boat 2013-08-04 12:50:21
我是新手照着书去打代码的,有几个地方不明白,还有一个错误 又不会改 请高手帮忙


private void Form1_Load(object sender, EventArgs e)
{
this.InitTreeView(this.treeView1);
this.AddNode(this.treeView1);
}

private void button1_Click(object sender, EventArgs e)
{
this.treeView1.ExpandAll();
}

private void button2_Click(object sender, EventArgs e)
{
this.treeView1.CollapseAll();
}


public class Book
{
public string BookName = string.Empty;
public string Author = string.Empty;
public string Price = string.Empty;
}

private void InitTreeView(TreeView treeView)
{
treeView.CheckBoxes = false;
treeView.FullRowSelect = true;
ImageList imagelist = new ImageList();
imagelist.Images.Add(new Icon ("0.ico"));
imagelist.Images.Add(new Icon ("1.ico"));
imagelist.Images.Add(new Icon ("2.ico"));
treeView.ImageList = imagelist;
treeView.LabelEdit = false;
treeView.PathSeparator = "\\";
treeView.Scrollable = true;
treeView.ShowLines = true;
treeView.ShowPlusMinus = true;
treeView.ShowRootLines = true;
treeView.AfterSelect += new TreeViewEventHandler(treeView_AfterSelect);
}

void treeView_AfterSelect(object sender, TreeViewEventArgs e)
{

if (e.Node.Tag != null) //这里是什么意思啊?
{
Book book = e.Node.Tag as Book; //这里呢?
textBox1.Text = e.Node.FullPath;
textBox2.Text = book.BookName;
textBox3.Text = book.Author;
textBox4.Text = book.Price;

}
}

private void AddNode(TreeView treeView)
{
TreeNode MainNode = treeView.Nodes[0]; // 这里抛出错误: 指定的参数已超出有效值的范围。 要怎么办?
treeView.BeginUpdate();
MainNode.Nodes.Clear();

TreeNode Catalog1 = new TreeNode("计算机技术");
Catalog1.ImageIndex = 0;
Catalog1.SelectedImageIndex = 1;
Book Book1 = new Book();
Book1.BookName = "计算机技术";
Book1.Author = "小王";
Book1.Price = "20.00";
TreeNode BookNode1 = new TreeNode(Book1.BookName);
BookNode1.ImageIndex = 2;
BookNode1.SelectedImageIndex = 2;
BookNode1.Tag = Book1; // 这里也不是很明白。。

Book Book2 = new Book();
Book2.BookName = "windows技术";
Book2.Author = "小李";
Book2.Price = "30.00";
TreeNode BookNode2 = new TreeNode(Book2.BookName);
BookNode2.ImageIndex = 2;
BookNode2.SelectedImageIndex = 2;
BookNode2.Tag = Book2;

Catalog1.Nodes.Add(BookNode1);
Catalog1.Nodes.Add(BookNode2);
MainNode.Nodes.Add(Catalog1);


TreeNode Catalog2 = new TreeNode("文学小说");
Catalog2.ImageIndex = 0;
Catalog2.SelectedImageIndex = 1;
Book Book3 = new Book();
Book3.BookName = "love";
Book3.Author = "小张";
Book3.Price = "600";
TreeNode BookNode3 = new TreeNode(Book3.BookName);
BookNode3.ImageIndex = 2;
BookNode3.SelectedImageIndex = 2;
BookNode3.Tag = Book3;

Book Book4 = new Book();
Book4.Author = "eeeee";
Book4.BookName = "aaa";
Book4.Price = "5649";
TreeNode BookNode4 = new TreeNode(Book4.BookName);
BookNode4.ImageIndex = 2;
BookNode4.SelectedImageIndex = 2;
BookNode4.Tag = Book4;


Catalog2.Nodes.Add(BookNode3);
Catalog2.Nodes.Add(BookNode4);
MainNode.Nodes.Add(Catalog2);

treeView.EndUpdate();
}
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2013-08-04
  • 打赏
  • 举报
回复
BookNode1.Tag = Book1; // 这里也不是很明白。。 用Tag属性(object类型)保存一个数据呗 这个懂了上面就懂了
dragon_boat 2013-08-04
  • 打赏
  • 举报
回复
引用 3 楼 hwenycocodq520 的回复:
还有你应该在msdn获取TreeView控件的知识,再联系课本练习 ==> 还有你应该先在msdn获取TreeView控件的知识,再联系课本练习 错别字好多!!
因为是自学的 所以对一些属性或方法的用法还是不是很明白,其实看了很多遍了 实在不懂才发帖请教人的 对于上面那个错误,我试过TreeNode MainNode=new TreeNode("root");这样的,但最后就不知道还要加上上treeView.Nodes.Add(MainNode); 其实不明白的地方大概明白了 谢谢你了
智商余额不足 2013-08-04
  • 打赏
  • 举报
回复
还有你应该在msdn获取TreeView控件的知识,再联系课本练习 ==> 还有你应该先在msdn获取TreeView控件的知识,再联系课本练习 错别字好多!!
智商余额不足 2013-08-04
  • 打赏
  • 举报
回复
1.if(e.Node.Tag != null) 判断选择的节点包含有关控件的数据的对象不为空 (光标移到Tag一般会出现提示信息,自己看看) 2.Book book = e.Node.Tag as Book; 数据类型object转换成Book引用类型 3.TreeNode MainNode = treeView.Nodes[0];当前树节点为空,所以你不能根据索引获取节点,如果没猜错,你按书本做漏做了点东西,可能作者已经在属性那边添加了一个根节点;如果没有,就这样修改: TreeNode MainNode=new TreeNode("root"); 在private void AddNode方法 treeView.EndUpdate();这句代码前加上treeView.Nodes.Add(MainNode); 4. BookNode1.Tag = Book1; //设置包含有关控件的数据的对象,也就是把对象存储到Tag属性中 楼主参考下,可能看漏眼都有... 还有你应该现在msdn获取TreeView控件的知识,再联系课本练习

110,571

社区成员

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

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

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