Индекс изображения узла TreeView изменяется при выборе - PullRequest
7 голосов
/ 01 ноября 2009

Когда я пытался использовать список изображений в древовидном представлении, индекс изображения изменяется при нажатии на treenode. Я понятия не имею, почему это происходит. Кто-нибудь может мне помочь?

Заранее спасибо

Ответы [ 3 ]

12 голосов
/ 01 ноября 2009

Вам необходимо установить и ImageIndex, и SelectedImageIndex на узле дерева.

10 голосов
/ 25 ноября 2009

'Назначение 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.)

1 голос
/ 08 января 2013

вы можете напрямую сделать это в конструкторе:

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