من دستورات زیر رو استفاده کردم :
bool IsTheSameCellValue(int column, int row){
DataGridViewCell cell1 = dataGridView1[column, row];
DataGridViewCell cell2 = dataGridView1[column, row - 1];
if (cell1.Value == null || cell2.Value == null)
{
return false;
}
return cell1.Value.ToString() == cell2.Value.ToString();
}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
if (e.RowIndex < 1 || e.ColumnIndex < 0)
return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
}
else
{
e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top;
}
}
if (e.RowIndex == 0) return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
e.Value = "";
e.FormattingApplied = true;
}
و بدین حالت شد دیتاگرید :
که همانطور که میبینید 2 مورد مشکل وجود دارد :
1- اول اینکه متن مربوطه در ستون ادغام شده رو من میخواستم همانند تصاویر قبلی در وسط ردیف های ادغام شده قرار بگیره که متاسفانه اینجا در اولین ردیف قرار گرفته!
2. مشکل بعدی هم که نتونستم حل کنم این هستش که این دستورات کل ستون هارو ادغام میکند...یعنی الان ستون اول که برا ردیف هست رو هم ادغام کرده...البته من جهت تست کد مقدار کل ردیف ها رو یکسان قرار داده بودم برا همین ادغام کرده ولی خب شاید در ستون های دیگر مقادیر یکسان داشته باشم نمیخواهم بدین شکل شود...فقط ستون دوم رو میخواستم ادغام کنم.