2010-08-05 18 views
25

我正在小C#/ Winforms应用程序中试验treeview。我已经编程地为TreeView分配了一个ImageList,并且所有节点都显示它们的图标很好,当我点击一个节点时,它的图标变化(到ImageList中的第一个图像),它们显示它们的图标很好,但是。我怎样才能让图标保持不变?因为我不知道该怎么设置它,因为图像索引对于节点(我猜?)是不同的。如何避免winforms treeview图标在选择项目时发生更改

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; 
     } 
    } 
} 

回答

41

只需设置SelectedImageIndex对每个节点的值相同的ImageIndex。所以,如果你是编程创建节点:

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

或者你可以指定一大堆在构造函数中:

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

您可以使用设计时编辑器,如果你”做同样的事情在设计时重新添加节点。您只需要在节点级别设置SelectedImageIndex,而不是在TreeView级别。

+0

太好了,我知道这将是死简单,只是不知道去哪里找。谢谢! (我不能接受这个解决方案在另外的7分钟内,当我可以的时候会这样做)。 – 2010-08-05 14:03:00

3

嗨您也可以使用下面的代码:

TreeNode Node = eventArgs.Node; 
Node.SelectedImageKey = Node.ImageKey; 
相关问题