C# DataGridView 中如何结合treeview显示

问题描述

要实现下图的显示,该如何操作呢?DataGridView+TreeView的结合,看过一些介绍,要利用第三方控件。如果不用第三方控件,该如何实现呢?重写paint事件?谢谢!

解决方案

解决方案二:
那不就相当于你自己做第三方控件了,不觉得费劲吗
解决方案三:
引用1楼Z65443344的回复:

那不就相当于你自己做第三方控件了,不觉得费劲吗

只是在学习C#中,想了解下思路而已和具体实现的过程。
解决方案四:
还是先把DataGridView和TreeView控件使用熟练,在考虑学习底层吧。
解决方案五:
这是dev的TreeList控件,如果你要自己写,那够你折腾的
解决方案六:
如果你要自己写,就重写DataGridView吧···那表格里面加入TreeView·····但是这个估计麻烦的要死··还不如用第三方控件,方便,快捷·····
解决方案七:
引用

先把DataGridView和TreeView控件使用熟练,在考虑学习底层吧。

没错!
解决方案八:
将DataGridView数据拖放到TreeView控件显示//加载DataGridView绑定数据显示privatevoidForm1_Load(objectsender,EventArgse){stringP_Connection=string.Format(//创建数据库连接字符串"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=test.mdb;UserId=Admin");OleDbDataAdapterP_OLeDbDataAdapter=newOleDbDataAdapter("selectau_idas用户编号,au_lnameas用户名,phoneas联系电话fromauthors",P_Connection);DataSetds=newDataSet();P_OLeDbDataAdapter.Fill(ds,"UserInfo");dataGridView1.DataSource=ds.Tables["UserInfo"].DefaultView;TreeNodetreeNode=newTreeNode("用户信息",0,0);treeView1.Nodes.Add(treeNode);//默认情况下追加节点追加节点ToolStripMenuItem.Checked=true;}//CodeGo.net///DataGridView的按下鼠标事件保存选定数据记录privatevoiddataGridView1_MouseDown(objectsender,MouseEventArgse){if(dataGridView1.SelectedCells.Count!=0){//定义一个二维数组,数组中的每一行代表DataGridView中的一条记录recordInfo=newstring[dataGridView1.Rows.Count,dataGridView1.Columns.Count];//当按下鼠标左键时,首先获取选定行,记录每一行对应的信息for(inti=0;i<dataGridView1.Rows.Count;i++){if(dataGridView1.Rows[i].Selected){for(intj=0;j<dataGridView1.Columns.Count;j++){recordInfo[i,j]=dataGridView1.Rows[i].Cells[j].Value.ToString();}}}}}//当鼠标进入TreeView控件时,触发的操作privatevoidtreeView1_MouseEnter(objectsender,EventArgse){if(追加节点ToolStripMenuItem.Checked==true){#region代码区域if(recordInfo!=null&&recordInfo.Length!=0){//用双重for循环遍历数组recordInfo中的内容for(inti=0;i<recordInfo.GetLength(0);i++){for(intj=0;j<recordInfo.GetLength(1);j++){//判断数组中的值是否为空if(recordInfo[i,j]!=null){if(j==0){//向TreeView中加入节点TreeNodeNode1=newTreeNode(recordInfo[i,j].ToString());treeView1.SelectedNode.Nodes.Add(Node1);treeView1.SelectedNode=Node1;}else{//添加子级节点下的子节点TreeNodeNode2=newTreeNode(recordInfo[i,j].ToString());treeView1.SelectedNode.Nodes.Add(Node2);}}}treeView1.SelectedNode=treeView1.Nodes[0];treeView1.ExpandAll();}//清空recordInfo中的记录for(intm=0;m<recordInfo.GetLength(0);m++){for(intn=0;n<recordInfo.GetLength(1);n++){recordInfo[m,n]=null;}}}#endregion}if(清空内容ToolStripMenuItem.Checked==true){if(treeView1.SelectedNode.Nodes.Count!=0){treeView1.SelectedNode.Remove();TreeNodetreeNode=newTreeNode("用户信息",0,0);treeView1.Nodes.Add(treeNode);treeView1.SelectedNode=treeNode;#region代码区域if(recordInfo!=null&&recordInfo.Length!=0){//用双重for循环遍历数组recordInfo中的内容for(inti=0;i<recordInfo.GetLength(0);i++){for(intj=0;j<recordInfo.GetLength(1);j++){//判断数组中的值是否为空if(recordInfo[i,j]!=null){if(j==0){//向TreeView中加入节点TreeNodeNode1=newTreeNode(recordInfo[i,j].ToString());treeView1.SelectedNode.Nodes.Add(Node1);treeView1.SelectedNode=Node1;}else{//添加子级节点下的子节点TreeNodeNode2=newTreeNode(recordInfo[i,j].ToString());treeView1.SelectedNode.Nodes.Add(Node2);}}}treeView1.SelectedNode=treeView1.Nodes[0];treeView1.ExpandAll();}//清空recordInfo中的记录for(intm=0;m<recordInfo.GetLength(0);m++){for(intn=0;n<recordInfo.GetLength(1);n++){recordInfo[m,n]=null;}}}#endregion追加节点ToolStripMenuItem.Checked=true;清空内容ToolStripMenuItem.Checked=false;}}}

时间: 2024-10-21 23:45:13

C# DataGridView 中如何结合treeview显示的相关文章

datagridview中某一列显示的内容有多种字体样式

问题描述 各位请教下:datagridview中某一列,是否可以做成类似于word修订模式时的效果,当删除文字时,删除文字中间添加删除符,新增文字时,新增文字下添加一条线. 解决方案 解决方案二:你可以单独设置每一个单元格的字体样式但是单元格里不能每个字不一样解决方案三:引用1楼Z65443344的回复: 你可以单独设置每一个单元格的字体样式但是单元格里不能每个字不一样 现在要做的功能就是要具体到单元格中每个字.

用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了

问题描述 用C#在datagridview中显示access数据库一张表中的内容,但是列的显示乱了 ACCESS数据库表中列的顺序是1左,2左,11左,12左,1右,2右,11右,12右,但是当显示在datagridview中时就呈现上面的乱码, 解决方案 这是一个bug 试试看:http://blog.csdn.net/lukesunch/article/details/4644101 再不行就不要绑定,手工循环添加.

c#窗体-c#将csv导入到datagridview中为什么有数据没显示

问题描述 c#将csv导入到datagridview中为什么有数据没显示 导入后有一部分在datagridview中没有显示,可能得原因有哪些...是不是csv文件中的数据格式有问题? 解决方案 很可能,比如说,你的数据中有引号逗号空格回车等没有转义

dataset-c#中读取目录树xml文件并显示到dataGridView中

问题描述 c#中读取目录树xml文件并显示到dataGridView中 读取xml,但是出来的表格各级目录的位置不对应,差一行 是因为我每列都创建了一个新的datarow,我想问问怎么能够读出来都对应整齐? 还有就是如果我不清楚这个xml目录树文件有几个等级 ,怎么用程序自动读出来并建立列,现在都是我手动建立的? 本人菜鸟一枚,正在学习中,还望大神们帮助~ 这是xml文件的结构图 资源目录是一级目录,floderlist中是剩下的各级目录,每个都有FolderCode和FolderParentC

vb.net连接sql数据库查询表格名显示到 DataGridView中,如何点击选择一个表名查询整个表的内容

问题描述 我的代码如下,怎么解决这个问题啊,想了很久.button1是查询表名,button2是查询选中的表内容PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimstrConnectionAsString="Server=DELL-PCSQLEXPRESS;database=renshi;uid=ouqing;pwd=123;"Dimsql

如何用vb.net语言将datagridview中的数据以数组的形式在程序中显示

问题描述 我用vb.net将.csv文件在datagridview中显示出来,现在想把数据用数组的形式显示,怎么编写代码 解决方案 解决方案二:可以将DataGridView单元格的数据赋给一个二维数组,但数组是用来存储数据的,显示就不行了解决方案三:那怎样编写代码,进行赋值呢????解决方案四:DimSum(n,m)asString'n,m即单元格总行.列数-1Fori=0TonForj=0TomSum(i,j)=DataGridView1.Item(j,i).ValueNextNext

先谢谢了!!!双击datagridview中显示的行后,在一个新的窗口中显示带有TEXTBOX同样内容\同样数据的程序,因为我要实现修改\添加数据,这样做比较直观

问题描述 双击datagridview中显示的行后,在一个新的窗口中显示带有TEXTBOX同样内容同样数据的程序,因为我要实现修改添加数据,这样做比较直观,最好给个代码,或源程序,谢谢了 解决方案 解决方案二:怎么没有人回答呀解决方案三:在SelectedIndexChanging事件中,把该行的主键取出来,然后window.open()新页面,参数传过去接下来就好做了吧,更新完毕关闭新开的窗口并刷新原来网页解决方案四:深更半夜的人本来就不多...解决方案五:///<summary>///双击

如何实现点击DataGridView中的任意一行,在HTMLTEXTBOX显示其中CONTENT列保存的数据?

问题描述 我在数据库建了一张表T_NEWS,表中有个Content列,类型是CLOB,我把HtmlTextBox填写的内容存储到Content里面了表中还有ID,TOPIC现在我用DataGridView绑定显示了这张表,想要实现点击DataGridView中的任意一行,就能将CONTEN中的内容显示在HtmlTextBOX里如何实现?最好有代码,本人小白

C#读取excel显示到dataGridView中,不允许修改,然后保存到SQL SERVER中,如何实现?

问题描述 C#读取excel显示到dataGridView中,不允许修改,然后保存到SQLSERVER中,如何实现?谢谢,QQ:270996889msn:zz123439@sohu.com 解决方案 解决方案二:既然要显示到DGV1.那么用ADO.NET读取到DataTable,见ADO.NET如何读取Excel(下)http://www.cnblogs.com/Jinglecat/archive/2006/08/26/487167.html(这是asp.net的,稍微修改即可,如Excel路径