这个过程相对来说比较简单,网上也有不少资料,但是自己在做过之后为了记住,算是给自己写一个博客吧。
下面直接上具体的流程
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、结果
经过以上步骤,在程序运行起来后,树节点就会绑定上指定的图片;同时实现节点的打开和关闭状态图标变化的功能。