2009-11-01 10 views

ответ

11

Вам нужно установить как ImageIndex и SelectedImageIndex на узле дерева.

9

«Выделено 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.)

+0

Если вы делаете приложение, представляющее его структуру, как папку, ваши пользователи оценят изменение изображения, когда они выбрали «папку». Просто убедитесь, что изменения не слишком яркие или тонкие. –

+0

Хорошо, у меня такая же ситуация. Но как я полностью прекратил это поведение? Все мои узлы создаются во время выполнения. Отслеживание события AfterSelect даст мне способ остановить это? –

+1

У меня была и точная ситуация. То, что я сделал, это создать статический словарь для размещения изображений с соответствующим индексом, потому что я не смог определить индекс imagelist во время выполнения, так как они были добавлены динамически. Поэтому я использовал что-то вроде: public static readonly Dictionary TREEVIEW_ICONS = новый словарь (); и поддерживал его при добавлении. Строкой в ​​словаре было уникальное имя файла изображения, а int - мой способ отслеживания индекса. То есть TREEVIEW_ICONS.Add (iconFileName, TREEVIEW_ICONS.Count) –

1

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

TreeNode node = new TreeNode("My treenode", 1, 1); 
Смежные вопросы