zoukankan      html  css  js  c++  java
  • 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、结果

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

  • 相关阅读:
    Choosing the Type at Runtime
    User-Defined Components Must Be Capitalized
    Computed property names
    Controlled Components
    Handling Event
    State
    props
    Functional and Class Components
    招聘漂亮的员工
    Spread Syntax
  • 原文地址:https://www.cnblogs.com/qingtian-jlj/p/10679801.html
Copyright © 2011-2022 走看看