TreeView节点的图像索引在选择时发生变化

时间:2009-11-01 06:58:30

标签: c# .net treeview imagelist

当我尝试在树视图中使用图像列表时,单击treenode时图像索引会发生变化。我不知道为什么会这样。任何人都可以帮助我吗?

提前致谢

5 个答案:

答案 0 :(得分:12)

您需要在树节点上设置ImageIndex和SelectedImageIndex。

答案 1 :(得分:10)

'SelectedImageIndex的目的是允许在选择时显示与特定节点的'ImageIndex'设置的图像不同的图像。为了使这两者保持一致,有必要将它们设置为相同的值。这可以在设计时或根据您的需要以编程方式完成。

例如,如果图像永远不会改变,那么就像在将新节点添加到TreeView时同时设置它们一样简单:

int myCurrentImageIndex = 0;
TreeNode node = myTreeView.Nodes.Add("new node!");
node.ImageIndex = node.SelectedImageIndex = myCurrentImageIndex;

但是,如果您在初始创建后因任何原因更改了ImageIndex值(例如对某种用户操作的响应),那么您还必须更改SelectedImageIndex。否则,它们将变得不一致。

int myNewImageIndex = 1;
node.ImageIndex = node.SelectedImageIndex = myNewImageIndex;

(注意,在'AfterSelect'事件的事件处理程序中将它们设置为相同是不够的。必须在代码中ImageIndex更改的任何位置进行。)

答案 2 :(得分:1)

你可以直接在构造函数中执行:

TreeNode node = new TreeNode("My treenode", 1, 1);

答案 3 :(得分:0)

TreeNode tn = new TreeNode();
tn.Text = "NewRecord";
tn.ImageIndex = 1;

treeView.SelectedNode.Nodes.Add(tn);
treeView.SelectedNode = tn;
treeView.SelectedNode.SelectedImageIndex = tn.ImageIndex; // <--- Problem solved
tn.BeginEdit();

答案 4 :(得分:0)

只需添加以下行:

Node.SelectedIndex:=Node.ImageIndex;