DevExpress--TreeList节点添加图片

这个过程相对来说比较简单,网上也有不少资料,但是自己在做过之后为了记住,算是给自己写一个博客吧。

下面直接上具体的流程

1、前提

控件使用的都是DevExpress和winform的原生控件两种;

2、所需界面控件

在界面上需要添加两个控件:一是DevExpress的Treelist树,二是winform的imagelist(或者使用DevExpress的imagecollection也可以)

3、为imagelist添加图片

因为是树结构目录的节点图片,因此大小一般要求是16x16的。将需要使用的图片添加到imagelist中。

在这里需要注意的是,如果中途删除了图片,一定要重新确认imagelist中剩余图片的索引,因为imagelist删除图片后会自动变更剩余图片的索引。

4、treelist属性设置

找到treelist控件的SelectImageList属性,将刚刚建立好的imagelist绑定到这个属性上;

5、treelist事件绑定

找到treelist的CustomDrawNodeImages事件,双击建立事件执行方法并添加控制代码:

private void treeList1_CustomDrawNodeImages(object sender, DevExpress.XtraTreeList.CustomDrawNodeImagesEventArgs e)
        {
            //如果有子节点,那么需要根据节点是否展开的状态赋值不同的图片;从而实现节点的展开和关闭是不同图片的功能
            if (e.Node.HasChildren)
                if (e.Node.Expanded)
                    e.SelectImageIndex = 1;
                else
                    e.SelectImageIndex = 0;
            else
                e.SelectImageIndex = 2;
        }

方法中的具体控制代码可以根据需要来实际确认。另外,其中imageIndex的数值就是第三步中imagelist中需要使用的节点图片的索引值。

同时,在非叶子节点的状态下增加是否展开状态的判断,可以实现节点在打开和关闭的不同状态下是不同图片的功能。

**注意**:必须使用SelectImageIndex这个参数,而不能使用e.Node.ImageIndex的方式赋值(此时会出现“集合已修改;可能无法执行枚举操作”的错误,但是目前不理解为什么为出现这个问题,暂时先记住正确的使用方式吧)。

6、结果

经过以上步骤,在程序运行起来后,树节点就会绑定上指定的图片;同时实现节点的打开和关闭状态图标变化的功能。

上一篇:c – ListViews的ImageLists中的透明图像


下一篇:获取Windows操作系统右键“新建”菜单支持的文件类型及对应的打开程序