1.寫(xiě)一個(gè)judge方法,判斷cell里的內(nèi)容是否相同:
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寫(xiě)一個(gè)CellPainting事件
注:由于該效果與該事件的觸發(fā)時(shí)機(jī)有關(guān),故要手寫(xiě),而非直接在設(shè)計(jì)窗口雙擊添加
private void dtgMeisaiData_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
int rtnInt = 0;
//セルの下側(cè)の境界線を「境界線なし」に設(shè)定
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
//1行目や列ヘッダ、行ヘッダの場(chǎng)合は何もしない
if (e.RowIndex < 1 || e.ColumnIndex < 0)
return;
rtnInt = isTheSameCellValue(e.ColumnIndex, e.RowIndex);
if (rtnInt == 1)
{
//同一値の場(chǎng)合、セルの上側(cè)の境界線を「境界線なし」に設(shè)定
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
}
else if (rtnInt == 0)
{
//同一値でない場(chǎng)合、セルの上側(cè)の境界線を既定の境界線に設(shè)定
e.AdvancedBorderStyle.Top = dtgMeisaiData.AdvancedCellBorderStyle.Top;
}
else if (rtnInt == -1)
{ // どちらかがNULL値の場(chǎng)合、何もしない。
}
}
3.在適當(dāng)?shù)臅r(shí)機(jī)加入CellPainting事件
如果沒(méi)有特殊需求,一般在DataGridView被賦完DataSource之后添加即可
dtgMeisaiData.CellPainting += new DataGridViewCellPaintingEventHandler(dtgMeisaiData_CellPainting);
posted on 2011-06-10 09:46
Ying-er 閱讀(4623)
評(píng)論(1) 編輯 收藏 所屬分類:
.Net