C#DataGridView单元格边框颜色问题(续)

连接单元格:

View Code
public class DataGridViewColorLinkCell : DataGridViewLinkCell
{
/// <summary>
/// 是否可见
/// </summary>
public bool Display
{
get;
set;
}

/// <summary>
/// 头部边框颜色
/// </summary>
public Color TopBorderColor
{
get;
set;
}
/// <summary>
/// 右侧边框颜色
/// </summary>
public Color RightBorderColor
{
get;
set;
}
/// <summary>
/// 底部边框颜色
/// </summary>
public Color BottomBorderColor
{
get;
set;
}
/// <summary>
/// 左侧边框颜色
/// </summary>
public Color LeftBorderColor
{
get;
set;
}

// Override the Clone method so that the Enabled property is copied.
public override object Clone()
{

DataGridViewColorLinkCell cell =
(DataGridViewColorLinkCell)base.Clone();

cell.Display = this.Display;
cell.TopBorderColor = this.TopBorderColor;
cell.RightBorderColor = this.RightBorderColor;
cell.BottomBorderColor = this.BottomBorderColor;
cell.LeftBorderColor = this.LeftBorderColor;
return cell;
}

// By default, enable the button cell.
public DataGridViewColorLinkCell()
{
this.Display = true;
this.TopBorderColor = Color.Empty;
this.RightBorderColor = Color.Empty;
this.BottomBorderColor = Color.Empty;
this.LeftBorderColor = Color.Empty;
}

protected override void Paint(Graphics graphics,
Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
DataGridViewElementStates elementState, object value,
object formattedValue, string errorText,
DataGridViewCellStyle cellStyle,
DataGridViewAdvancedBorderStyle advancedBorderStyle,
DataGridViewPaintParts paintParts)
{
// Draw the cell background, if specified.
if ((paintParts & DataGridViewPaintParts.Background) ==
DataGridViewPaintParts.Background)
{

SolidBrush cellBackground =
new SolidBrush(cellStyle.BackColor);
graphics.FillRectangle(cellBackground, cellBounds);
cellBackground.Dispose();
}

// Draw the cell borders, if specified.
if ((paintParts & DataGridViewPaintParts.Border) ==

DataGridViewPaintParts.Border)
{
PaintBorder(graphics, clipBounds, cellBounds, cellStyle,
advancedBorderStyle);

}
if (Display)
{
base.Paint(graphics, clipBounds, cellBounds, rowIndex,
elementState, value, formattedValue, errorText,
cellStyle, advancedBorderStyle, paintParts);
}
//绘制边框
if (TopBorderColor != Color.Empty)
{
graphics.DrawLine(new Pen(TopBorderColor), cellBounds.X, cellBounds.Y, cellBounds.X + cellBounds.Width, cellBounds.Y);
}
if (RightBorderColor != Color.Empty)
{
graphics.DrawLine(new Pen(RightBorderColor), cellBounds.X + cellBounds.Width-1, cellBounds.Y, cellBounds.X + cellBounds.Width-1, cellBounds.Y + cellBounds.Height);
}
if (BottomBorderColor != Color.Empty)
{
graphics.DrawLine(new Pen(BottomBorderColor), cellBounds.X, cellBounds.Y + cellBounds.Height-1, cellBounds.X + cellBounds.Width, cellBounds.Y + cellBounds.Height-1);
}
if (LeftBorderColor != Color.Empty)
{
graphics.DrawLine(new Pen(LeftBorderColor), cellBounds.X, cellBounds.Y, cellBounds.X, cellBounds.Y + cellBounds.Height);
}
}
}


单元格列:

public class DataGridViewColorLinkColumn : DataGridViewLinkColumn
{
public DataGridViewColorLinkColumn()
{
this.CellTemplate = new DataGridViewColorLinkCell();
}
}



posted @ 2012-02-15 09:20  z.seven  阅读(707)  评论(0编辑  收藏  举报