有一个DataGridView,其中一列是已使用量,一列是总量现在想添加一列 来表示 已使用量/总量 的百分比最好用一个类似进度条样子的图片之类的来显示请问该如何做?可不可以用DataGridViewImageColumn,添加一个小矩形,然后改变图片的宽度?(但是我找不到如何修改DataGridViewImageColumn中图片的宽度和位置)或者还有什么其他的方法?最好在图片的百分比上面还能显示数字的百分比。(我目前还能想到的一个方法就是做上二十张图片表示0%到100%,但是在DataGridViewImageColumn如何在图片上再加文字?文字不能加在图片上,因为太不精确了)谢了!

解决方案 »

  1.   

    使用GDI+进行矩形的绘制,完成你的百分比显示.
    然后,使用DataGridViewImageCell进行显示即可.Graphic g=DataGridView.CreateGraphic;
    g.DrawRangle(//具体自己参考一下Graphic类里面的DrawRangle.
    比如,你可以对矩形宽设置为DataGridViewImageCell的宽度.然后,平均分成100份.如果你需要显示90%,则,可以设置g.DrawRangle(0,0,90,Height);//这些数字是我随手写的.你自己参考一下相关的资料后再进行改写.
      

  2.   

    http://paulstovell.net/blog/index.php/custom-drawn-datagridview-cells-with-gdi/http://code.csdn.net/blog/c-c/2007/01/17/28893
      

  3.   

    我用楼上那个第一个网址不通过设计器 在程序中添加如下代码ProgressColumn pc = new ProgressColumn();
    pc.Name = "percent";
    pc.HeaderText = "百分比";
    dataGridView1.Columns.Add(pc);运行到最后一行出错,提示:无法添加该列,原因是它的 CellType 属性为空
    请问如何设置?谢谢!
      

  4.   

    重写了那个人代码中的这个属性
    public override DataGridViewCell CellTemplate
        {
            get
            {
                return base.CellTemplate;
            }
            set
            {
                if ((value != null) && !(value is DataGridViewTextBoxCell))
                {
                    throw new InvalidCastException(SR.GetString("DataGridViewTypeColumn_WrongCellTemplateType", new object[] { "System.Windows.Forms.DataGridViewTextBoxCell" }));
                }
                base.CellTemplate = value;
            }
        }
    别人给说的。现在好了。
    谢谢大家!