【问题标题】:Strange phenomenon about imagelist of treeview in C# applicationC#应用中treeview的imagelist的奇怪现象
【发布时间】:2017-10-24 03:34:36
【问题描述】:

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

我使用 imagelist 来设置树视图的树节点的图像。 当树节点被选中时,它会在树节点处显示一张带笔的纸。 当未选中treenode时,会在treenode处显示一张没有笔的纸。

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

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

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

Imagelist中使用的图片

treenode处没有多余行的图像

我遇到的现象是图像在树节点上显示了一条额外的线。

图像在 treenode 处多了一行

这个现象出现的比较明显,经过我多次编码和编译程序并运行它。

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

于是,我把imagelist的所有图片都删除了,然后重新把图片重新加载到imagelist中,重新编译程序后不做任何改动运行,这个现象就消失了。

当我做了一些小的修改时,这个现象一遍又一遍地出现。并且可以通过再次将图像重新加载到 Imagelist 来修复。

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

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

【问题讨论】:

  • 如果您使用的是 WPF,那么您可能会使用一个名为 Snoop snoopwpf.codeplex.com 的程序,它将自己注入到程序的可视化树中。然后您可以尝试重现该错误并使用 snoop 在您的可视化树中打开/关闭 ui 元素。这将使您了解哪个控件产生了一条线。
  • @netaholic 抱歉,我没有提到我使用 winform 在 C# 中开发此应用程序。无论如何,感谢您的 cmets。
  • 您好,请问有微软团队中专门从事Visual Stuido 的工程师可以评论这篇文章吗?

标签: c# winforms treeview imagelist


【解决方案1】:

最后,我将图像放入 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);
        ......
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2016-01-03
    相关资源
    最近更新 更多