困扰我好一段时间了,很是郁闷,具体做了如下操作:
    将一张大小为(1024*16)的位图通过ImageList的AddStrip方法加栽到ImageList中去(64个16*16的小图标),然后创建一棵TreeView,将其ImageList属性设置为刚刚初始化好的ImageList,添加节点并设置各个节点的ImageIndex和SelectedImageIndex.搞定之后显示,奇怪的问题发生了,同样的程序,图像能否显示成功完全没有规律,有的时候能够显示图像,有的则不行。如果能显示,则所有的TreeView都能正确显示,反之都不能。在其他机器上跑也是相同的问题,我尝试着换了那张位图的格式,bmp,png,jpg都试了基本上一样的问题。
    我用了dotnetbar系列的控件,其他就没有特别之处了。大家不知道有没有注意,你在使用VS2005时候,如果同时使用sourcesafe之类的版本控制软件,solution explorer中的TreeView在各个文件节点之前是会加上小图标的,比如一把小锁的图标,可是很多机器上是显示不出来的。

解决方案 »

  1.   

    没有显示小锁的图标,一般是因为没有和VSS的项目正确的绑定,从源代码管理菜单里修改看看吧.
    对于大图分小图的知道有这个用法,但是从来没有这么用过,我一般都是一个一个的图来处理的.
      

  2.   

    没发现过该问题 使用ico的不行么?
      

  3.   

    我用单个的放在资源里面,从来没有问题将一张大小为(1024*16)的位图通过ImageList的AddStrip方法加栽到ImageList中去(64个16*16的小图标)
    -----------改成稳定的方法吧
      

  4.   

    刚才试了一下小图的加法,也试了加ico格式的,同样的问题还是存在.
    如果把ColorDepth设下,能显示成功的几率感觉会大些
    还是没有一个好地解决办法
      

  5.   

    估计是ImageList的TransparentColor设置不对。设置为Form的BackColor试一试。
      

  6.   

    花了一天时间,总算搞定了
    以前做Splash的时候,把application起来之前的一句调用
    Application.SetCompatibleTextRenderingDefault(false);删掉了(想不起来当初为什么要删)
    加上之后就一直可以正常显示了
    MSDN上也没有对这个方法的说明,刚google了一下:
    大家可以看一下http://blog.csdn.net/harrymeng/archive/2007/01/05/1474987.aspx
    引用如下:
    在.net2.0中增加了很多新的内容,比如:Application.SetCompatibleTextRenderingDefault方法。
    但是,在VS2005附带的MSDN2005中却没有它的详细说明。为此,我查找了MSDN官方网站和MSDN2005的相关属性,获悉了该方法的部分信息。现将其记录如下。一、相关链接1.MSDN网站有Application.SetCompatibleTextRenderingDefault的详细说明,地址:
    http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.setcompatibletextrenderingdefault(VS.80).aspx
    2.MSDN2005的相关属性UseCompatibleTextRendering,地址:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/P_System_Windows_Forms_ButtonBase_UseCompatibleTextRendering.htm二、总结1.作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI)
    true使用GDI+方式显示文本,
    false使用GDI方式显示文本.
    2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.
    3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常.
      

  7.   

    老大,我跟你碰上的是一模一样的问题
    但是我的“Application.SetCompatibleTextRenderingDefault(false);”是在的啊
      

  8.   

    问题解决,
    把Main里面的Application.EnableVisualStyles();注释掉就OK了