c# - 选择项目时如何避免winforms treeview图标发生变化

标签 c# winforms treeview

我正在一个小型 C#/Winforms 应用程序中试验 TreeView 。我已经以编程方式将一个 ImageList 分配给 TreeView ,所有节点都很好地显示了它们的图标,但是当我单击一个节点时,它的图标会更改(到 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;
        }
    }
}

最佳答案

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

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

或者您可以在构造函数中指定全部:

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

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

关于c# - 选择项目时如何避免winforms treeview图标发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3415354/

相关文章:

c# - 创建没有主键的 UPDATE 语句

c# - Ninject 工厂 : Create the appropriate class based on a parameter

c# - 在 C# 中编写表单时无法查看设计器

c# - 如何为 WPF TreeView 设置 DataTemplate 以显示列表的所有元素?

python - 使用 python 和 gtkTreeView 创建一个简单的文件浏览器

c# - 尝试直接从内存中读取 (C#)

C# "Semi-Generic"接口(interface)?

c# - wp7.1 模拟器显示内部错误

c# - 如何将表单作为参数传递给方法? (C#)

wpf - 如何挂接到 WPF Treeview 的 BeforeNodeExpand 和 AfterNodeExpand?