【问题标题】:How to avoid winforms treeview icon changes when item selected选择项目时如何避免winforms树视图图标更改
【发布时间】:2011-03-25 19:51:53
【问题描述】:

我正在一个小的 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;
        }
    }
}

【问题讨论】:

    标签: c# winforms treeview


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 太好了,我知道这很简单,只是不知道去哪里找。谢谢! (我不能在另外 7 分钟内接受这个作为解决方案,我会在可以的时候这样做)。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多