DataGridTextBoxColumnTrim:DataGrid不能完全显示时显示,部分显示“...”

DataGrid控件中的单元格中的内容如果比单元格还大的话,就会自动剪切后面过多的部分。

下面的代码提供一个解决方案,当单元格不够长的时候,显示部分+“...”。

效果:

 

 

代码如下:

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. namespace LJCM
  8. {
  9.     /* YTY 2008/11/26添加
  10.      * 当不能完全显示时,显示部分+"..."
  11.     * */
  12.     /// <summary>
  13.     /// DataGridTextBoxTrim 当不能完全显示时,以“...”代替
  14.     /// </summary>
  15.     public class DataGridTextBoxColumnTirm:DataGridTextBoxColumn
  16.     {
  17.         public DataGridTextBoxColumnTirm()
  18.         {
  19.             //
  20.             // TODO: 在此处添加构造函数逻辑
  21.             //
  22.         }
  23.         protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum)
  24.         {
  25.             
  26.             string text = GetColumnValueAtRow(source,rowNum).ToString();
  27.             if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
  28.                 >bounds.Height)
  29.             {
  30.                 Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
  31.                 Brush foreBrush    = new SolidBrush(base.DataGridTableStyle.ForeColor);
  32.                 Rectangle rect = bounds;
  33.                 StringFormat format   = new StringFormat();
  34.                 format.FormatFlags = StringFormatFlags.LineLimit;
  35.                 format.Trimming = StringTrimming.EllipsisCharacter;
  36.                 g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
  37.                 format.Dispose();
  38.             }
  39.             else
  40.             {
  41.                 base.Paint(g,bounds,source,rowNum);
  42.             }
  43.             /*end*/
  44.         }
  45.         protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, bool alignToRight)
  46.         {
  47.             string text = GetColumnValueAtRow(source,rowNum).ToString();
  48.             if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
  49.                 >bounds.Height)
  50.             {                                                                                     
  51.                 //Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
  52.                 Brush foreBrush = new SolidBrush(base.DataGridTableStyle.ForeColor);
  53.                 Rectangle rect = bounds;
  54.                 StringFormat format   = new StringFormat();
  55.                 if(alignToRight)
  56.                 {
  57.                     format.FormatFlags = StringFormatFlags.LineLimit;
  58.                     format.Trimming = StringTrimming.EllipsisPath;
  59.                 }
  60.                 else
  61.                 {
  62.                     format.FormatFlags = StringFormatFlags.LineLimit;
  63.                     format.Trimming = StringTrimming.EllipsisCharacter;
  64.                 }
  65.                 g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
  66.                 format.Dispose();
  67.             }
  68.             else
  69.             {
  70.                 base.Paint(g,bounds,source,rowNum,alignToRight);
  71.             }
  72.             /* end*/
  73.         }
  74.         protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
  75.         {
  76.             string text = GetColumnValueAtRow(source,rowNum).ToString();
  77.             g.FillRectangle(backBrush,bounds);
  78.             if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
  79.                 >bounds.Height)
  80.             {
  81.                 //Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
  82.                 //Brush foreBrush    = new SolidBrush(base.DataGridTableStyle.ForeColor);
  83.                 Rectangle rect = bounds;
  84.                 StringFormat format   = new StringFormat();
  85.                 if(alignToRight)
  86.                 {
  87.                     format.FormatFlags = StringFormatFlags.LineLimit;
  88.                     format.Trimming = StringTrimming.EllipsisPath;
  89.                 }
  90.                 else
  91.                 {
  92.                     format.FormatFlags = StringFormatFlags.LineLimit;
  93.                     format.Trimming = StringTrimming.EllipsisCharacter;
  94.                 }
  95.                 
  96.                 g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
  97.                 format.Dispose();
  98.             }
  99.             else
  100.             {
  101.                 base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
  102.             }
  103.         }
  104.     }
  105. }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值