Как избежать изменения значков дерева winforms при выбранном элементе
Я экспериментирую с деревом в небольшом приложении С#/Winforms. Я программно назначил ImageList для древовидного изображения, и все узлы отображают свои значки очень хорошо, , но, когда я нажимаю на node, его значок изменяется (до самого первого изображения в ImageList). Как я могу оставить значок неизменным?
BTW: "SelectedImageIndex" установлен в "(none)", так как я действительно не знаю, что его установить, поскольку индекс изображения отличается для узлов (я думаю?).
UPDATE. Вот код приложения (я использую Visual Studio Express 2008):
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.BeginUpdate();
treeView1.Nodes.Clear();
treeView1.Nodes.Add("root","Project", 0);
treeView1.Nodes[0].Nodes.Add("Foo", "Foo", 2);
treeView1.Nodes[0].Nodes[0].Nodes.Add("Fizz", "Fizz", 3);
treeView1.Nodes[0].Nodes[0].Nodes.Add("Buzz", "Buzz", 3);
treeView1.Nodes[0].Nodes.Add("Bar", "Bar", 1);
treeView1.Nodes[0].Nodes[1].Nodes.Add("Fizz", "Fizz", 2);
treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Buzz", "Buzz", 3);
treeView1.EndUpdate();
treeView1.ImageList = imageList1;
}
}
}
Ответы
Ответ 1
Просто установите значение SelectedImageIndex для каждого node равным значению ImageIndex. Итак, если вы программно создаете node:
TreeNode node = new TreeNode("My Node");
node.ImageIndex = 1;
node.SelectedImageIndex = 1;
Или вы можете указать всю партию в конструкторе:
TreeNode node = new TreeNode("My Node" ,1, 1);
Вы можете сделать то же самое, используя редактор времени разработки, если вы добавляете узлы во время разработки. Вам просто нужно установить значение SelectedImageIndex на уровне node, а не на уровне TreeView.
Ответ 2
Привет Вы также можете использовать приведенный ниже код:
TreeNode Node = eventArgs.Node;
Node.SelectedImageKey = Node.ImageKey;