给treeview的部分节点添加图片

乱术 2016-08-29 02:04:46
我希望只给部分节点前添加图片,可是其他节点都默认添加了图片。
首先我有一个imagelist,里面存放了一系列不同图片,把imagelist关联到了treeview上。
然后我在希望添加图片的节点上node.ImageIndex = node.SelectedImageIndex = index;(我希望选中不选择显示的图片是一样的)
然后再把node添加到treeview。这样过后我添加的节点确实都显示了不同的图片,可是未添加图片的其他节点也显示了index=0的图片,请问我不希望未添加图片的节点显示图片,该怎么做?
...全文
1305 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
乱术 2016-09-01
  • 打赏
  • 举报
回复
引用 22 楼 zhanggong1993 的回复:
这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。 持续关注中
我先暂时加空白照片勉强实现效果了。
zhanggong1993 2016-08-31
  • 打赏
  • 举报
回复
这个问题好像不能直接解决,只能自己重写一个控件或者加透明图片。 持续关注中
Forty2 2016-08-30
  • 打赏
  • 举报
回复
试试(我自己没试过)? node.ImageIndex = node.SelectedImageIndex = -1;
乱术 2016-08-30
  • 打赏
  • 举报
回复
引用 16 楼 sinat_32349327 的回复:
[quote=引用 15 楼 liyan010 的回复:] 不设置imageindex不就好了吗?
你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗? 这样也不行呢.[/quote]
乱术 2016-08-30
  • 打赏
  • 举报
回复
引用 18 楼 Forty2 的回复:
试试(我自己没试过)?
node.ImageIndex = node.SelectedImageIndex = -1;


怎样还是不行啊,node是我想添加图片的节点,index= -1 这样node添加的是默认的index为0的图片,其他我没有设置的节点也都添加了index为0 的图片,我不希望其他节点有图片。
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 15 楼 liyan010 的回复:
不设置imageindex不就好了吗?
你是说我需要添加的node只 node_son.SelectedImageIndex = index;就好了吗? 这样也不行呢.
liyan010 2016-08-29
  • 打赏
  • 举报
回复
不设置imageindex不就好了吗?
shoppo0505 2016-08-29
  • 打赏
  • 举报
回复
引用 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第一个(默认)图片。[/quote] 不懂你在说什么
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 11 楼 crystal_lz 的回复:
[quote=引用 8 楼 sinat_32349327 的回复:] [quote=引用 2 楼 crystal_lz 的回复:] 那就就放一个 空白的图片 给你那些不想显示的
首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。[/quote] 当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?[/quote] node_son是我需要添加图片的节点,其他的节点的imageindex应该是默认为0了。
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 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第一个(默认)图片。
crystal_lz 2016-08-29
  • 打赏
  • 举报
回复
引用 8 楼 sinat_32349327 的回复:
[quote=引用 2 楼 crystal_lz 的回复:] 那就就放一个 空白的图片 给你那些不想显示的
首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。[/quote] 当你没有赋值的时候 此时 你觉得 node_son.ImageIndex 的值是什么?
shoppo0505 2016-08-29
  • 打赏
  • 举报
回复
node_son.ImageIndex = node_son.SelectedImageIndex = i; 上面这句就是赋值了啊。
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 7 楼 shoppo0505 的回复:
[quote=引用 3 楼 sinat_32349327 的回复:] [quote=引用 1 楼 shoppo0505 的回复:] 那就多添加一个if判断,原先没有添加图片的,不赋值图片路径
我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。[/quote] 代码贴出来看看[/quote] 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); }
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 2 楼 crystal_lz 的回复:
那就就放一个 空白的图片 给你那些不想显示的
首先,这不是增加工作量了吗?另外我想知道我这样做,其他节点也添加了图片的原因。我应该怎样避免这个问题。
shoppo0505 2016-08-29
  • 打赏
  • 举报
回复
引用 3 楼 sinat_32349327 的回复:
[quote=引用 1 楼 shoppo0505 的回复:] 那就多添加一个if判断,原先没有添加图片的,不赋值图片路径
我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。[/quote] 代码贴出来看看
乱术 2016-08-29
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
那就多添加一个if判断,原先没有添加图片的,不赋值图片路径
我没有给其他的赋值啊,这个难道他是默认赋值的吗?如果按照您的思路,我应该怎么判断。
crystal_lz 2016-08-29
  • 打赏
  • 举报
回复
那就就放一个 空白的图片 给你那些不想显示的
shoppo0505 2016-08-29
  • 打赏
  • 举报
回复
那就多添加一个if判断,原先没有添加图片的,不赋值图片路径

111,097

社区成员

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

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

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