«Выделено 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.)
Если вы делаете приложение, представляющее его структуру, как папку, ваши пользователи оценят изменение изображения, когда они выбрали «папку». Просто убедитесь, что изменения не слишком яркие или тонкие. –
Хорошо, у меня такая же ситуация. Но как я полностью прекратил это поведение? Все мои узлы создаются во время выполнения. Отслеживание события AfterSelect даст мне способ остановить это? –
У меня была и точная ситуация. То, что я сделал, это создать статический словарь для размещения изображений с соответствующим индексом, потому что я не смог определить индекс imagelist во время выполнения, так как они были добавлены динамически. Поэтому я использовал что-то вроде: public static readonly Dictionary TREEVIEW_ICONS = новый словарь (); и поддерживал его при добавлении. Строкой в словаре было уникальное имя файла изображения, а int - мой способ отслеживания индекса. То есть TREEVIEW_ICONS.Add (iconFileName, TREEVIEW_ICONS.Count) –