选择项目时如何避免winforms treeview图标更改

时间:2010-08-05 13:54:52

标签: c# winforms treeview

我正在一个小C#/ Winforms应用程序中试验树视图。我已经以编程方式将一个ImageList分配给树视图,并且所有节点都显示它们的图标就好了,但是当我点击一个节点时,它的图标会改变(到ImageList中的第一个图像)。如何让图标保持不变?

BTW:“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 个答案:

答案 0 :(得分:49)

只需将每个节点的SelectedImageIndex设置为与ImageIndex相同的值即可。因此,如果您以编程方式创建节点:

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

或者您可以在构造函数中指定整个批次:

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

如果您在设计时添加节点,则可以使用设计时编辑器执行相同的操作。您只需要在节点级别而不是在TreeView级别设置SelectedImageIndex。

答案 1 :(得分:3)

您好您也可以使用以下代码:

TreeNode Node = eventArgs.Node;
Node.SelectedImageKey = Node.ImageKey;