7

当我尝试在树视图中使用图像列表时,单击树节点时图像索引会发生变化。我不知道为什么会这样。谁能帮我?

提前致谢

4

5 回答 5

13

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

于 2009-11-01T07:29:31.107 回答
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 更改的任何地方完成。)

于 2009-11-24T22:43:58.443 回答
1

您可以直接在构造函数中执行此操作:

TreeNode node = new TreeNode("My treenode", 1, 1);
于 2013-01-08T16:37:59.267 回答
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();
于 2020-01-31T15:07:35.737 回答
0

只需添加这一行:

Node.SelectedIndex:=Node.ImageIndex;

于 2020-11-10T13:32:53.357 回答