在 ComboBoxCellType 中同时显示文本和图像

本文主要通过代码讲述如何通过在ComboBoxCellType 中同时显示文本和图像

发布于 2012/11/13 00:00

SpreadJS

Spread for WinForms 控件中提供了多种图形化单元格类型,比如:可以通过 ButtonCellType 在单元格中显示按钮,通过 ColorPickerCellType 在单元格中显示颜色对话框。

Spread 中 提供了 ComboBoxCellType 来显示这文本框控件,这文本框由一个可编辑的文本框和一个下拉列表组成。用户可以在文本框中直接输入值,也可以通过下拉列表选择一个值。

下面列出三种不同的属性来决定 ComboBoxCellType 下拉列表的显示方式:
1、Items:Items属性是一个字符串类型的数组,用户在下拉列表中看到的选项就是Items中的值
2、ItemData:通过该属性可以设置选项的值,该值不显示在下拉列表中
3、ImageList:该属性可以让您设置一个图像列表

通过以上属性,您可以显示图像/图标和文本在下拉列表中,不过在单元格中却不能同时显示图像/图标和文本的内容,下面我们就来看一看如何在单元格中同时显示图像/图标和文本内容。

为了实现以上功能,我们需要从ComboBoxCellType继承一个自定义的单元格类型,并且重写 PaintCell方法来实现同时显示图像和文本内容,代码如下:
 
public class ImageCombo : FarPoint.Win.Spread.CellType.ComboBoxCellType

    {

       public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)

        {

            if (value != null)

            {

                int ind =0;

                for (int i = 0; i < base.Items.Length; i++)

                {

                    if (base.Items[i] == value.ToString())

                    {

                        ind = i;

                        break;

                    }

                }

                Image img = base.ImageList.Images[ind];

                g.DrawImage(img, new Rectangle(new Point(r.X, r.Y), new Size(20, 20)));

                g.DrawString(value.ToString(), appearance.Font, new SolidBrush(Color.Black), new PointF(r.X + 20, r.Y-10 + 10));

                ControlPaint.DrawComboButton(g, new Rectangle(r.Right - 17, r.Y, 17, r.Height), ButtonState.Normal);                

            }

            else

            {

                base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);

            }

        }       

    }

复制代码
需要注意的是,当用户进行选择操作时,单元格只会显示文本内容,当单元格离开编辑模式时就会同时显示图像和文本内容

运行结果:
(1.88 M, 下载次数:4)

SpreadJS | 下载试用

纯前端表格控件SpreadJS,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,备受华为、苏宁易购、天弘基金等行业龙头企业的青睐,并被中国软件行业协会认定为“中国优秀软件产品”。SpreadJS 可为用户提供类 Excel 的功能,满足表格文档协同编辑、 数据填报、 类 Excel 报表设计等业务场景需求,极大的降低企业研发成本和项目交付风险。

如下资源列表,可以为您评估产品提供帮助:

相关产品
推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态