1.写一个judge方法,判断cell里的内容是否相同:
private int isTheSameCellValue(int column, int row)
{
DataGridViewCell cell1 = dtgMeisaiData[column, row];
DataGridViewCell cell2 = dtgMeisaiData[column, row - 1];
if (cell1.Value == null || cell2.Value == null)
return -1;
//文字列としてセルの値を比較
if (cell1.Value.ToString() == cell2.Value.ToString())
return 1;
else
return 0;
}
2.为DataGridView写一个CellPainting事件
注:由于该效果与该事件的触发时机有关,故要手写,而非直接在设计窗口双击添加
private void dtgMeisaiData_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
int rtnInt = 0;
//セルの下側の境界線を「境界線なし」に設定
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
//1行目や列ヘッダ、行ヘッダの場合は何もしない
if (e.RowIndex < 1 || e.ColumnIndex < 0)
return;
rtnInt = isTheSameCellValue(e.ColumnIndex, e.RowIndex);
if (rtnInt == 1)
{
//同一値の場合、セルの上側の境界線を「境界線なし」に設定
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
}
else if (rtnInt == 0)
{
//同一値でない場合、セルの上側の境界線を既定の境界線に設定
e.AdvancedBorderStyle.Top = dtgMeisaiData.AdvancedCellBorderStyle.Top;
}
else if (rtnInt == -1)
{ // どちらかがNULL値の場合、何もしない。
}
}
3.在适当的时机加入CellPainting事件
如果没有特殊需求,一般在DataGridView被赋完DataSource之后添加即可
dtgMeisaiData.CellPainting += new DataGridViewCellPaintingEventHandler(dtgMeisaiData_CellPainting);
posted on 2011-06-10 09:46
Ying-er 阅读(4609)
评论(1) 编辑 收藏 所属分类:
.Net