Как избежать изменения значка дерева в winforms при выборе элемента - PullRequest
31 голосов
/ 05 августа 2010

Я экспериментирую с деревом в небольшом приложении на C # / Winforms. Я программно назначил ImageList древовидной структуре, и все узлы отображают свои значки просто отлично, , но , когда я щелкаю узел, его значок меняется (на самое первое изображение в ImageList). Как мне сделать так, чтобы иконка осталась без изменений?

Кстати: «SelectedImageIndex» установлен в «(none)», так как я не знаю, как его установить, так как индекс изображения отличается для узлов (я полагаю?).

ОБНОВЛЕНИЕ : Вот код приложения (я использую 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;
        }
    }
}

Ответы [ 2 ]

49 голосов
/ 05 августа 2010

Просто установите SelectedImageIndex для каждого узла на то же значение, что и ImageIndex.Итак, если вы создаете свой узел программно:

        TreeNode node = new TreeNode("My Node");
        node.ImageIndex = 1;
        node.SelectedImageIndex = 1;

Или вы можете указать весь лот в конструкторе:

        TreeNode node = new TreeNode("My Node" ,1, 1);

Вы можете сделать то же самое, используя время разработкиредактор, если вы добавляете узлы во время разработки.Вам просто нужно установить SelectedImageIndex на уровне узла, а не на уровне TreeView.

3 голосов
/ 08 октября 2014

Привет Вы также можете использовать следующий код:

TreeNode Node = eventArgs.Node;
Node.SelectedImageKey = Node.ImageKey;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...