利用CustomDrawNodeCell 的DrawImage重绘小图标

本文介绍了如何在C#的treeList控件中实现节点单元格添加小图标、鼠标悬停时小图标变化以及展示数据关系的图标功能。通过CustomDrawNodeCell事件和AfterFocusNode事件进行处理,详细展示了实现这些功能的代码示例。
摘要由CSDN通过智能技术生成

要求:基于在treeList控件实现如下要求:

1.TreeListNode的Cell加小图标

这样的需求应该很多,个人觉得是比较简单的,不多说直接上代码:

private TreeListColumn statusClumn;
private System.Windows.Forms.ImageList imageList;
void treeList1_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
        {
            if(e.Column.FieldName != statusClumn.FieldName )
             {
               return;
            }
             //从imageList拿到下标为的图片对象
             Image image = imageList.Images[0];
             //绘制坐标设置XY和高宽
             Rectangle rectangle = new Rectangle(e.Bounds.X + 5, e.Bounds.Y + (e.Bounds.Height - image.Height) / 2, image.Width, image.Height)
             //执行绘制方法
             e.Cache.Graphics.DrawImage(image, rectangle );
             //将重绘前的背景色再次绘制上去
             e.Cache.FillRectangle(e.Appearance.GetBackBrush(e.Cache), e.Bounds);
             //将重绘前的文字样式再次绘制上去
             e.Cache.DrawString(e.CellText, e.Appearance.Font, e.Appearance.GetForeBrush(e.Cache), e.Bounds, e.Appearance.GetStringFormat());
             //标记执行处理,一旦为true,底层会抹除statusClumn的样式效果,因此需重新设置FillRectangle和DrawString信息
             e.Handled = true;
        }

2.鼠标悬停时改变小图标

在CustomDrawNodeCell事件中无法获取到鼠标是否悬停,那么我们可以通过获取悬停背景色确定是否悬停,如代码所示&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值