DataGrid控件中的单元格中的内容如果比单元格还大的话,就会自动剪切后面过多的部分。
下面的代码提供一个解决方案,当单元格不够长的时候,显示部分+“...”。
效果:
代码如下:
- using System;
- using System.Drawing;
- using System.Collections;
- using System.ComponentModel;
- using System.Windows.Forms;
- using System.Data;
- namespace LJCM
- {
- /* YTY 2008/11/26添加
- * 当不能完全显示时,显示部分+"..."
- * */
- /// <summary>
- /// DataGridTextBoxTrim 当不能完全显示时,以“...”代替
- /// </summary>
- public class DataGridTextBoxColumnTirm:DataGridTextBoxColumn
- {
- public DataGridTextBoxColumnTirm()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum)
- {
- string text = GetColumnValueAtRow(source,rowNum).ToString();
- if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
- >bounds.Height)
- {
- Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
- Brush foreBrush = new SolidBrush(base.DataGridTableStyle.ForeColor);
- Rectangle rect = bounds;
- StringFormat format = new StringFormat();
- format.FormatFlags = StringFormatFlags.LineLimit;
- format.Trimming = StringTrimming.EllipsisCharacter;
- g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
- format.Dispose();
- }
- else
- {
- base.Paint(g,bounds,source,rowNum);
- }
- /*end*/
- }
- protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, bool alignToRight)
- {
- string text = GetColumnValueAtRow(source,rowNum).ToString();
- if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
- >bounds.Height)
- {
- //Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
- Brush foreBrush = new SolidBrush(base.DataGridTableStyle.ForeColor);
- Rectangle rect = bounds;
- StringFormat format = new StringFormat();
- if(alignToRight)
- {
- format.FormatFlags = StringFormatFlags.LineLimit;
- format.Trimming = StringTrimming.EllipsisPath;
- }
- else
- {
- format.FormatFlags = StringFormatFlags.LineLimit;
- format.Trimming = StringTrimming.EllipsisCharacter;
- }
- g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
- format.Dispose();
- }
- else
- {
- base.Paint(g,bounds,source,rowNum,alignToRight);
- }
- /* end*/
- }
- protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
- {
- string text = GetColumnValueAtRow(source,rowNum).ToString();
- g.FillRectangle(backBrush,bounds);
- if(g.MeasureString(text,this.DataGridTableStyle.DataGrid.Font,bounds.Width).Height
- >bounds.Height)
- {
- //Brush backBrush = new SolidBrush(base.DataGridTableStyle.BackColor);
- //Brush foreBrush = new SolidBrush(base.DataGridTableStyle.ForeColor);
- Rectangle rect = bounds;
- StringFormat format = new StringFormat();
- if(alignToRight)
- {
- format.FormatFlags = StringFormatFlags.LineLimit;
- format.Trimming = StringTrimming.EllipsisPath;
- }
- else
- {
- format.FormatFlags = StringFormatFlags.LineLimit;
- format.Trimming = StringTrimming.EllipsisCharacter;
- }
- g.DrawString(text,this.DataGridTableStyle.DataGrid.Font, foreBrush, rect, format);
- format.Dispose();
- }
- else
- {
- base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
- }
- }
- }
- }