C#应用中treeview的imagelist的奇怪现象

Strange phenomenon about imagelist of treeview in C# application

我最近使用 treeview 组件来实现我的 html editor.The 我使用的编译器是 Visual Studio Community 2017。

我使用图像列表来设置树视图的树节点图像。 当树节点被选中时,它会在树节点处显示一张纸和一支笔。 当没有选择树节点时,它会在树节点处显示一张没有笔的纸。

我在应用程序中使用的代码:

enum ImageList : int { Blank, BlankWithPen, Document, DocumentWithPen, DocumentWithLock, Locked }

TreeView1.SelectedNode.ImageIndex = (int)ImageList.Blank;
TreeView1.SelectedNode.SelectedImageIndex = (int)ImageList.BlankWithPen;

图像列表中使用的图像

图像在树节点处没有额外的线

我遇到的现象是图片显示在树节点处多了一条线。

图像在树节点处有一条额外的线

这个现象出现得比较明显,经过我多次编码编译程序运行

虽然我发现了这个现象,但我试图修复它。而且我已经检查过这些原始图像,这些图像周围没有边框。

于是,我将imagelist中的图片全部删除,然后重新加载imagelist中的图片,不做任何改动重新编译程序后运行,这种现象就消失了

这个现象反复出现,是我几次小修改的时候出现的。并且可以通过再次将图像重新加载到 Imagelist 来修复。

显然,这个问题与编码无关。

我想知道为什么会出现这种现象,如何永久解决这个问题?

最后,我把图片放到了Properties的Resources中,然后重新加载图片到imageList中。

private void Form1_Load(object sender, EventArgs e)
    {
        ......
        ImageList1.Images.Add(Properties.Resources.imagesBlank);
        ImageList1.Images.Add(Properties.Resources.imagesBlankWithPen);
        ImageList1.Images.Add(Properties.Resources.imagesDocument);
        ImageList1.Images.Add(Properties.Resources.imagesDocumentWithPen);
        ImageList1.Images.Add(Properties.Resources.Lock);
        ImageList1.Images.Add(Properties.Resources.imagesDocumentwithLock);
        ......
    }