C# treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编.docx
- 文档编号:8356354
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:2
- 大小:15.41KB
C# treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编.docx
《C# treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编.docx》由会员分享,可在线阅读,更多相关《C# treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编.docx(2页珍藏版)》请在冰豆网上搜索。
C#treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编
treeview添加新节点的代码:
//InitialTreeView
//treeView1.BeginUpdate();
//treeView1.Nodes.Clear();
//treeView1.Nodes.Add("Parent");
//treeView1.Nodes[0].Nodes.Add("Child1");
//treeView1.Nodes[0].Nodes.Add("Child2");
//treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");
//treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("GreatGrandchild");
//treeView1.EndUpdate();核心思想,用dataAdapter进行数据查询,将查询结果赋值给DataSet中的一个DataTable,然后用DataTableReader来读取DataTable,再利用DataRow[]数组,将DataTableReader读取的信息存入数组,其中数组长度可以由属性DataTable.Rows.Count来确定,数组赋值DataTable.Rows.CopyTo(DataRow[],0),通过这条命令,已经将DataReader读取的DataTable中的数据存入DataRow[DataTable.Rows.Count]中了。
需要注意的是DataRows存储的数据类型是object,所以最好调试的时候加入断点来判断自己所需数据的位置。
如array[0].ItemArray[0].ToString(),就是将Rows数组中第一个元素所包含的ItemArray成员的第一个元素转化成了字符串类型。
将根节点,第二级节点和叶子节点分别用上述方法表示,再利用嵌套for循环就可以完成treeview中添加三层结构的需求。
treeView1.BeginUpdate();
treeView1.Nodes.Clear();
for(inti=0;i
{
treeView1.Nodes.Add(arry[i].ItemArray[1].ToString());//+"("+arry[i].ItemArray[1].ToString()+")");
treeView1.Nodes[i].Tag=i.ToString();
GradeID=arry[i].ItemArray[0].ToString();
stringstr_class="select*fromclasseswhereclassgrade="+GradeID;
OleDbDataAdapterda_class=newOleDbDataAdapter(str_class,conn);
DataSetds_class=newDataSet();
da_class.Fill(ds_class,"treeNodesCh");
DataTabledt_class=ds_class.Tables["treeNodesCh"];
DataTableReaderdr_class=newDataTableReader(dt_class);//ds_class["treeNodesCh"];
DataRow[]arry_class=newDataRow[dt_class.Rows.Count];
dt_class.Rows.CopyTo(arry_class,0);
for(intj=0;j { treeView1.Nodes[i].Nodes.Add(arry_class[j].ItemArray[1].ToString()); treeView1.Nodes[i].Nodes[j].Tag=i.ToString()+j.ToString(); ClassID=arry_class[j].ItemArray[0].ToString();stringstr_student="select*fromstudentswhereclassID="+ClassID; OleDbDataAdapterda_stu=newOleDbDataAdapter(str_student,conn); DataSetds_stu=newDataSet(); da_stu.Fill(ds_stu,"treeNodesChCh"); DataTabledt_stu=ds_stu.Tables["treeNodesChCh"]; DataTableReaderdr_stu=newDataTableReader(dt_stu);//ds_class["treeNodesCh"]; DataRow[]arry_stu=newDataRow[dt_stu.Rows.Count]; dt_stu.Rows.CopyTo(arry_stu,0); for(intk=0;k { treeView1.Nodes[i].Nodes[j].Nodes.Add(arry_stu[k].ItemArray[1].ToString()); treeView1.Nodes[i].Nodes[j].Nodes[k].Tag=i.ToString()+j.ToString()+k.ToString(); } } } treeView1.EndUpdate();对于鼠标双击事件,这个有点小技巧,我用的是treeview的MouseDown事件,如何判断根节点,次一级节点和叶子节点,其实上面的代码已经有了: treeView1.Nodes[i].Nodes[j].Tag=i.ToString()+j.ToString();这个就是第二集节点。 treeView1.Nodes[i].Nodes[j].Nodes[k].Tag=i.ToString()+j.ToString()+k.ToString();这个是叶子。 在MouseDown事件中判断叶子节点是否被选中,只需要判断selectedNode.Tag.ToString().Length的长度是否是3,如果是就是叶子节点,如果不是,就是根或者次一级节点, privatevoidtreeView1_MouseDown(objectsender,MouseEventArgse) { if(treeView1.SelectedNode.Tag==null) treeView1.SelectedNode.Tag="fuck"; //treeView1.SelectedNode. elseif(treeView1.SelectedNode.Tag.ToString().Length>=3) { treeView1.SelectedNode.Tag=null; treeView1.SelectedNode=null; btnClicsh=newbtnClic(); sh.Show(); } } 时间: 2021.02.04 创作: 欧阳育 时间: 2021.02.04 创作: 欧阳育
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# treeview添加三层结构并为叶子节点增加双击事件之欧阳育创编 treeview 添加 三层 结构 叶子 节点 增加 双击 事件 欧阳 创编