如何避免winforms treeview图标在选择项目时发生更改
问题描述:
我正在小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;
}
}
}
答
只需设置SelectedImageIndex对每个节点的值相同的ImageIndex。所以,如果你是编程创建节点:
TreeNode node = new TreeNode("My Node");
node.ImageIndex = 1;
node.SelectedImageIndex = 1;
或者你可以指定一大堆在构造函数中:
TreeNode node = new TreeNode("My Node" ,1, 1);
您可以使用设计时编辑器,如果你”做同样的事情在设计时重新添加节点。您只需要在节点级别设置SelectedImageIndex,而不是在TreeView级别。
答
嗨您也可以使用下面的代码:
TreeNode Node = eventArgs.Node;
Node.SelectedImageKey = Node.ImageKey;
太好了,我知道这将是死简单,只是不知道去哪里找。谢谢! (我不能接受这个解决方案在另外的7分钟内,当我可以的时候会这样做)。 – 2010-08-05 14:03:00