如何在treeview的节点前面添加图标?

时间:2021-11-27 14:45:32
如题!
  本人刚接触C#,有很多基本东西还不了解,望各位高手指教!

21 个解决方案

#1


顶一个!
等高手路过。

#2


如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
Dim tnNew As TreeNode = yourTreeView.Nodes.Add( "Test" )
tnNew.ImageIndex = 0 'Index starts from 1

#3


C#

TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1

#4


节点我都添加好了,现在只是要在节点前面加图标,
Knight94(愚翁) 兄弟可否说的再详细一点啊,

#5


如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1


------------------------------------------------------------
说的挺详细的了。这是在程序动态添加的。


如果你所有节点使用相同的图标,那就可以为 TreeView 选择 ImageList.
然后设置 ImageIndex 。如果让 node 被选择时有不同的图标就把 SelectedImageIndex 设置为不同的值。

#6


为整个Tree增加一个Imagelist。

然后为每个节点分配ImageIndex。

#7


但是我在属性中不能设置Imagelist,ImageIndex啊!

#8



你添加一个 ImageList 了么?
它也是个控件。

#9


从工具箱找到ImageList 拖到你的TreeView上 然后就可以设置了

#10


但是我生成的树是遍历数据库后,还原生成的。那该怎么加 啊?
是要获取节点的相对路径吗?

#11


Knight94(愚翁) 说的很清楚了啊。

如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1
-----------------------------------------------------------
按上面的做不就完了?

#12


静态:
创建一个ImageList(工具栏里有个控件),选中它,属性理由一个Images,点击后面的...按钮,向这个控件里加几幅图标,图标的索引值是从0开始的.然后保存.将treeview属性里的ImageList选项设为你刚才添加的ImageList1,再在属性Image中找到你想要的图标
动态:
创建一个ImageList(工具栏里有个控件),选中它,属性理由一个Images,点击后面的...按钮,向这个控件里加几幅图标,图标的索引值是从0开始的.然后保存.将treeview属性里的ImageList选项设为你刚才添加的ImageList1,如愚翁所说,在初始化树时TreeNode node=yourTreeView.Nodes.Add("");//节点添加
node.ImageIndex=0;//0为ImageList1里的图标的索引值

#13


大家说的我都明白,说的也很对,但是我想在一个TREEVIEW里添加不同的图标,在属性里选择只能是添加相同的图标啊,而被选择时,图标是不变的。

#14


也就是说,我添加节点的时候不是用TreeNode node=yourTreeView.Nodes.Add("")这种方式添加的,而是从数据库把数据读出来,赋给一个变量,再根据条件来添加的。

#15


代码?
总会有添加node的时候吧?
可能你的方法俺不清楚。
我的是类似下面这样的。



private void CreateTree()
{

dv = dtTree.DefaultView;
dv.Sort = "TypeParentID ASC"; 

DataRowView[] arrDRV = dv.FindRows( 0 );//Get root data info
if( arrDRV.Length == 0 ) 
{
return;
}

TreeNode tnNew = null;

foreach( DataRowView drv in arrDRV )
{

tnNew = TreeView.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in node's tag
tnNew.SelectedImageIndex = 0;//这里设置图标
tnNew.ImageIndex = 1;

CreateTreeNode( ref tnNew );
}

this.ExpandAll();
}




private void CreateTreeNode( ref TreeNode tnParent )
{

DataRowView[] arrDRV = dv.FindRows( tnParent.Tag );//Get children data info

if( arrDRV.Length == 0 )
{
return;
}

TreeNode tnNew = null;

foreach( DataRowView drv in arrDRV )
{
tnNew = tnParent.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in node's tag

tnNew.SelectedImageIndex = 2;//这里设置图标
tnNew.ImageIndex = 3;

//如果是多层的话,就打开此句
//CreateTreeNode( ref tnNew );
}
}

#16


mark

#17


收藏

#18


wdy9927(wdy9927)兄弟,谢谢你的回复,我会给你结分的,
看来大家还是没有明白我的想法,呵呵。。
我再给大家说一遍,就是我在一个TREEVIEW里添加了两棵树,我想把这两棵树的图标设置为不同的图标。就是这样的。我该怎么做?

#19


先添加一个图像图标,然后图像图标和树关联,再设树的ImageIndex 即可.

#20


一个treeview两棵树?那倒没有试过.你是怎么实现的?总有判断这个节点属于哪个树吧?属于第一课就加一种图标,属于另外一棵就加载另外一种图标,没试过啊,不知道可行不

#21


我只是设置了两个根节点,让他生成两棵树,
 我试试,

#1


顶一个!
等高手路过。

#2


如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
Dim tnNew As TreeNode = yourTreeView.Nodes.Add( "Test" )
tnNew.ImageIndex = 0 'Index starts from 1

#3


C#

TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1

#4


节点我都添加好了,现在只是要在节点前面加图标,
Knight94(愚翁) 兄弟可否说的再详细一点啊,

#5


如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1


------------------------------------------------------------
说的挺详细的了。这是在程序动态添加的。


如果你所有节点使用相同的图标,那就可以为 TreeView 选择 ImageList.
然后设置 ImageIndex 。如果让 node 被选择时有不同的图标就把 SelectedImageIndex 设置为不同的值。

#6


为整个Tree增加一个Imagelist。

然后为每个节点分配ImageIndex。

#7


但是我在属性中不能设置Imagelist,ImageIndex啊!

#8



你添加一个 ImageList 了么?
它也是个控件。

#9


从工具箱找到ImageList 拖到你的TreeView上 然后就可以设置了

#10


但是我生成的树是遍历数据库后,还原生成的。那该怎么加 啊?
是要获取节点的相对路径吗?

#11


Knight94(愚翁) 说的很清楚了啊。

如果是winform的话,首先需要为窗体添加ImageList,然后把所有需要显示的图标加载其中。
然后用此去初始化treeview的ImageList属性

那么添加节点的时候,可以如下:
TreeNode tnNew = yourTreeView.Nodes.Add( "Test" );
tnNew.ImageIndex = 0;//Index starts from 1
-----------------------------------------------------------
按上面的做不就完了?

#12


静态:
创建一个ImageList(工具栏里有个控件),选中它,属性理由一个Images,点击后面的...按钮,向这个控件里加几幅图标,图标的索引值是从0开始的.然后保存.将treeview属性里的ImageList选项设为你刚才添加的ImageList1,再在属性Image中找到你想要的图标
动态:
创建一个ImageList(工具栏里有个控件),选中它,属性理由一个Images,点击后面的...按钮,向这个控件里加几幅图标,图标的索引值是从0开始的.然后保存.将treeview属性里的ImageList选项设为你刚才添加的ImageList1,如愚翁所说,在初始化树时TreeNode node=yourTreeView.Nodes.Add("");//节点添加
node.ImageIndex=0;//0为ImageList1里的图标的索引值

#13


大家说的我都明白,说的也很对,但是我想在一个TREEVIEW里添加不同的图标,在属性里选择只能是添加相同的图标啊,而被选择时,图标是不变的。

#14


也就是说,我添加节点的时候不是用TreeNode node=yourTreeView.Nodes.Add("")这种方式添加的,而是从数据库把数据读出来,赋给一个变量,再根据条件来添加的。

#15


代码?
总会有添加node的时候吧?
可能你的方法俺不清楚。
我的是类似下面这样的。



private void CreateTree()
{

dv = dtTree.DefaultView;
dv.Sort = "TypeParentID ASC"; 

DataRowView[] arrDRV = dv.FindRows( 0 );//Get root data info
if( arrDRV.Length == 0 ) 
{
return;
}

TreeNode tnNew = null;

foreach( DataRowView drv in arrDRV )
{

tnNew = TreeView.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in node's tag
tnNew.SelectedImageIndex = 0;//这里设置图标
tnNew.ImageIndex = 1;

CreateTreeNode( ref tnNew );
}

this.ExpandAll();
}




private void CreateTreeNode( ref TreeNode tnParent )
{

DataRowView[] arrDRV = dv.FindRows( tnParent.Tag );//Get children data info

if( arrDRV.Length == 0 )
{
return;
}

TreeNode tnNew = null;

foreach( DataRowView drv in arrDRV )
{
tnNew = tnParent.Nodes.Add( drv.Row["TypeName"].ToString() );
tnNew.Tag = drv.Row["TypeID"].ToString();//Save "TypeID" in node's tag

tnNew.SelectedImageIndex = 2;//这里设置图标
tnNew.ImageIndex = 3;

//如果是多层的话,就打开此句
//CreateTreeNode( ref tnNew );
}
}

#16


mark

#17


收藏

#18


wdy9927(wdy9927)兄弟,谢谢你的回复,我会给你结分的,
看来大家还是没有明白我的想法,呵呵。。
我再给大家说一遍,就是我在一个TREEVIEW里添加了两棵树,我想把这两棵树的图标设置为不同的图标。就是这样的。我该怎么做?

#19


先添加一个图像图标,然后图像图标和树关联,再设树的ImageIndex 即可.

#20


一个treeview两棵树?那倒没有试过.你是怎么实现的?总有判断这个节点属于哪个树吧?属于第一课就加一种图标,属于另外一棵就加载另外一种图标,没试过啊,不知道可行不

#21


我只是设置了两个根节点,让他生成两棵树,
 我试试,