给treeview的部分节点添加图片

时间:2021-05-11 00:59:29
我希望只给部分节点前添加图片,可是其他节点都默认添加了图片。
首先我有一个imagelist,里面存放了一系列不同图片,把imagelist关联到了treeview上。
然后我在希望添加图片的节点上node.ImageIndex = node.SelectedImageIndex = index;(我希望选中不选择显示的图片是一样的)
然后再把node添加到treeview。这样过后我添加的节点确实都显示了不同的图片,可是未添加图片的其他节点也显示了index=0的图片,请问我不希望未添加图片的节点显示图片,该怎么做?

23 个解决方案

#1


那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

#2


那就就放一个 空白的图片 给你那些不想显示的

#3


引用 1 楼 shoppo0505 的回复:
那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

#4


该回复于2016-08-29 16:00:58被管理员删除

#5


该回复于2016-08-29 16:00:58被管理员删除

#6


该回复于2016-08-29 16:00:59被管理员删除

#7


引用 3 楼 sinat_32349327 的回复:
Quote: 引用 1 楼 shoppo0505 的回复:

那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

代码贴出来看看

#8


引用 2 楼 crystal_lz 的回复:
那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

#9


引用 7 楼 shoppo0505 的回复:
Quote: 引用 3 楼 sinat_32349327 的回复:

Quote: 引用 1 楼 shoppo0505 的回复:

那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

代码贴出来看看


 for (int i= 0; i< imagelist.Images.Count; i++)
                            {
                                TreeNode node_son = new TreeNode();
                                node_son.Text = valuelist[i];
                                node_son.Checked = true;
                                treeView1.ImageList = imagelist;
                                node_son.ImageIndex = node_son.SelectedImageIndex = i;
                                node.Nodes.Add(node_son);    
                            }

#10


node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

#11


引用 8 楼 sinat_32349327 的回复:
Quote: 引用 2 楼 crystal_lz 的回复:

那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?

#12


引用 10 楼 shoppo0505 的回复:
node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

node_son是我希望复制的节点,比如后面那个node节点,是他的父节点,我没有复制,他也有图片。默认第一个,我查看资料看到了这个:添加节点时,有以下几个方法
Add(String)   --- 将具有指定标签文本的新树节点添加到当前树节点集合的末尾。

Add(TreeNode)   ---将先前创建的树节点添加到树节点集合的末尾。
Add(String, String)   ---指定节点KEY和显示文本。

Add(String, String, Int32)   ---指定节点KEY,显示文本,图片编号

Add(String, String, String)   ---指定节点KEY,显示文本,图片KEY

Add(String, String, Int32, Int32)    ---指定节点KEY,显示文本,图片编号,选中时图片编号
Add(String, String, String, String)    ---指定节点KEY,显示文本,图片编号,选中时图片KEY

3. 注意

(1) 我们在添加图片到 ImageList 的时候,可以选择不添加KEY的Add方法,但后面调用时,就必须用Add(String, String, Int32)或者Add(String, String, Int32, Int32)的方法添加树节点。

(2) 如果我们添加了图片列表,但在添加子节点时没有调用具体的图片,那么每个节点会默认添加上ImageList第一个(默认)图片。

(3) 如果添加树节点时,没有设置选中时(第四个参数)图片编号或key,那么会在选中时,图标会变成ImageList第一个(默认)图片。

#13


引用 11 楼 crystal_lz 的回复:
Quote: 引用 8 楼 sinat_32349327 的回复:

Quote: 引用 2 楼 crystal_lz 的回复:

那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?

 node_son是我需要添加图片的节点,其他的节点的imageindex应该是默认为0了。

#14


引用 12 楼 sinat_32349327 的回复:
Quote: 引用 10 楼 shoppo0505 的回复:

node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

node_son是我希望复制的节点,比如后面那个node节点,是他的父节点,我没有复制,他也有图片。默认第一个,我查看资料看到了这个:添加节点时,有以下几个方法
Add(String)   --- 将具有指定标签文本的新树节点添加到当前树节点集合的末尾。

Add(TreeNode)   ---将先前创建的树节点添加到树节点集合的末尾。
Add(String, String)   ---指定节点KEY和显示文本。

Add(String, String, Int32)   ---指定节点KEY,显示文本,图片编号

Add(String, String, String)   ---指定节点KEY,显示文本,图片KEY

Add(String, String, Int32, Int32)    ---指定节点KEY,显示文本,图片编号,选中时图片编号
Add(String, String, String, String)    ---指定节点KEY,显示文本,图片编号,选中时图片KEY

3. 注意

(1) 我们在添加图片到 ImageList 的时候,可以选择不添加KEY的Add方法,但后面调用时,就必须用Add(String, String, Int32)或者Add(String, String, Int32, Int32)的方法添加树节点。

(2) 如果我们添加了图片列表,但在添加子节点时没有调用具体的图片,那么每个节点会默认添加上ImageList第一个(默认)图片。

(3) 如果添加树节点时,没有设置选中时(第四个参数)图片编号或key,那么会在选中时,图标会变成ImageList第一个(默认)图片。


不懂你在说什么

#15


不设置imageindex不就好了吗?

#16


引用 15 楼 liyan010 的回复:
不设置imageindex不就好了吗?

你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗?
这样也不行呢.

#17


引用 16 楼 sinat_32349327 的回复:
Quote: 引用 15 楼 liyan010 的回复:

不设置imageindex不就好了吗?

你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗?
这样也不行呢.
给treeview的部分节点添加图片

#18


试试(我自己没试过)?
node.ImageIndex = node.SelectedImageIndex =  -1;

#19


引用 18 楼 Forty2 的回复:
试试(我自己没试过)?
node.ImageIndex = node.SelectedImageIndex =  -1;


怎样还是不行啊,node是我想添加图片的节点,index= -1 这样node添加的是默认的index为0的图片,其他我没有设置的节点也都添加了index为0 的图片,我不希望其他节点有图片。

#20


该回复于2016-08-31 23:54:39被版主删除

#21


该回复于2016-08-31 23:54:39被版主删除

#22


这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。
持续关注中

#23


引用 22 楼 zhanggong1993 的回复:
这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。
持续关注中
我先暂时加空白照片勉强实现效果了。

#1


那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

#2


那就就放一个 空白的图片 给你那些不想显示的

#3


引用 1 楼 shoppo0505 的回复:
那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

#4


该回复于2016-08-29 16:00:58被管理员删除

#5


该回复于2016-08-29 16:00:58被管理员删除

#6


该回复于2016-08-29 16:00:59被管理员删除

#7


引用 3 楼 sinat_32349327 的回复:
Quote: 引用 1 楼 shoppo0505 的回复:

那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

代码贴出来看看

#8


引用 2 楼 crystal_lz 的回复:
那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

#9


引用 7 楼 shoppo0505 的回复:
Quote: 引用 3 楼 sinat_32349327 的回复:

Quote: 引用 1 楼 shoppo0505 的回复:

那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。

代码贴出来看看


 for (int i= 0; i< imagelist.Images.Count; i++)
                            {
                                TreeNode node_son = new TreeNode();
                                node_son.Text = valuelist[i];
                                node_son.Checked = true;
                                treeView1.ImageList = imagelist;
                                node_son.ImageIndex = node_son.SelectedImageIndex = i;
                                node.Nodes.Add(node_son);    
                            }

#10


node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

#11


引用 8 楼 sinat_32349327 的回复:
Quote: 引用 2 楼 crystal_lz 的回复:

那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?

#12


引用 10 楼 shoppo0505 的回复:
node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

node_son是我希望复制的节点,比如后面那个node节点,是他的父节点,我没有复制,他也有图片。默认第一个,我查看资料看到了这个:添加节点时,有以下几个方法
Add(String)   --- 将具有指定标签文本的新树节点添加到当前树节点集合的末尾。

Add(TreeNode)   ---将先前创建的树节点添加到树节点集合的末尾。
Add(String, String)   ---指定节点KEY和显示文本。

Add(String, String, Int32)   ---指定节点KEY,显示文本,图片编号

Add(String, String, String)   ---指定节点KEY,显示文本,图片KEY

Add(String, String, Int32, Int32)    ---指定节点KEY,显示文本,图片编号,选中时图片编号
Add(String, String, String, String)    ---指定节点KEY,显示文本,图片编号,选中时图片KEY

3. 注意

(1) 我们在添加图片到 ImageList 的时候,可以选择不添加KEY的Add方法,但后面调用时,就必须用Add(String, String, Int32)或者Add(String, String, Int32, Int32)的方法添加树节点。

(2) 如果我们添加了图片列表,但在添加子节点时没有调用具体的图片,那么每个节点会默认添加上ImageList第一个(默认)图片。

(3) 如果添加树节点时,没有设置选中时(第四个参数)图片编号或key,那么会在选中时,图标会变成ImageList第一个(默认)图片。

#13


引用 11 楼 crystal_lz 的回复:
Quote: 引用 8 楼 sinat_32349327 的回复:

Quote: 引用 2 楼 crystal_lz 的回复:

那就就放一个 空白的图片 给你那些不想显示的

首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。

当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?

 node_son是我需要添加图片的节点,其他的节点的imageindex应该是默认为0了。

#14


引用 12 楼 sinat_32349327 的回复:
Quote: 引用 10 楼 shoppo0505 的回复:

node_son.ImageIndex = node_son.SelectedImageIndex = i;
上面这句就是赋值了啊。

node_son是我希望复制的节点,比如后面那个node节点,是他的父节点,我没有复制,他也有图片。默认第一个,我查看资料看到了这个:添加节点时,有以下几个方法
Add(String)   --- 将具有指定标签文本的新树节点添加到当前树节点集合的末尾。

Add(TreeNode)   ---将先前创建的树节点添加到树节点集合的末尾。
Add(String, String)   ---指定节点KEY和显示文本。

Add(String, String, Int32)   ---指定节点KEY,显示文本,图片编号

Add(String, String, String)   ---指定节点KEY,显示文本,图片KEY

Add(String, String, Int32, Int32)    ---指定节点KEY,显示文本,图片编号,选中时图片编号
Add(String, String, String, String)    ---指定节点KEY,显示文本,图片编号,选中时图片KEY

3. 注意

(1) 我们在添加图片到 ImageList 的时候,可以选择不添加KEY的Add方法,但后面调用时,就必须用Add(String, String, Int32)或者Add(String, String, Int32, Int32)的方法添加树节点。

(2) 如果我们添加了图片列表,但在添加子节点时没有调用具体的图片,那么每个节点会默认添加上ImageList第一个(默认)图片。

(3) 如果添加树节点时,没有设置选中时(第四个参数)图片编号或key,那么会在选中时,图标会变成ImageList第一个(默认)图片。


不懂你在说什么

#15


不设置imageindex不就好了吗?

#16


引用 15 楼 liyan010 的回复:
不设置imageindex不就好了吗?

你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗?
这样也不行呢.

#17


引用 16 楼 sinat_32349327 的回复:
Quote: 引用 15 楼 liyan010 的回复:

不设置imageindex不就好了吗?

你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗?
这样也不行呢.
给treeview的部分节点添加图片

#18


试试(我自己没试过)?
node.ImageIndex = node.SelectedImageIndex =  -1;

#19


引用 18 楼 Forty2 的回复:
试试(我自己没试过)?
node.ImageIndex = node.SelectedImageIndex =  -1;


怎样还是不行啊,node是我想添加图片的节点,index= -1 这样node添加的是默认的index为0的图片,其他我没有设置的节点也都添加了index为0 的图片,我不希望其他节点有图片。

#20


该回复于2016-08-31 23:54:39被版主删除

#21


该回复于2016-08-31 23:54:39被版主删除

#22


这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。
持续关注中

#23


引用 22 楼 zhanggong1993 的回复:
这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。
持续关注中
我先暂时加空白照片勉强实现效果了。