c# dataGridView1合并单元格时,单元格值为null异常

合并单元格(同一列值相同时合并)

#region 合并
/// <summary>
/// 合并同一列中值相同的相邻单元格
/// </summary>
/// <param name="dgv">DataGridView</param>
/// <param name="columnIndexList">要合并的列的索引列表</param>
/// <param name="e">当前单元格的属性访问器</param>
private void MergeCellInOneColumn(DataGridView dgv, List<int> columnIndexList, DataGridViewCellPaintingEventArgs e)
{

    if (columnIndexList.Contains(e.ColumnIndex) && e.RowIndex != -1)
    {
        //if (e.RowIndex < (dgv.RowCount-1) && dgv.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value == null)
        //    return;
        //if (e.RowIndex > 0 && dgv.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value == null)
        //    return;
        //if (e.Value == null)
        //    return;

        Brush gridBrush = new SolidBrush(dgv.GridColor);
        Brush backBrush = new SolidBrush(e.CellStyle.BackColor);
        Pen gridLinePen = new Pen(gridBrush);

        //擦除
        e.Graphics.FillRectangle(backBrush, e.CellBounds);

        //画右边线
        e.Graphics.DrawLine(gridLinePen,
           e.CellBounds.Right - 1,
           e.CellBounds.Top,
           e.CellBounds.Right - 1,
           e.CellBounds.Bottom - 1);

        //画底边线 Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[ ].Value
        if ((e.RowIndex < dgv.Rows.Count - 1 && Convert.ToString(dgv.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value) != Convert.ToString(e.Value)) ||
            e.RowIndex == dgv.Rows.Count - 1)
        {
            e.Graphics.DrawLine(gridLinePen,
                e.CellBounds.Left,
                e.CellBounds.Bottom - 1,
                e.CellBounds.Right - 1,
                e.CellBounds.Bottom - 1);
        }

        //写文本
        if (e.RowIndex == 0 || Convert.ToString(dgv.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value) != Convert.ToString(e.Value))
        {
            e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                Brushes.Black, e.CellBounds.X + 2,
                e.CellBounds.Y + 5, StringFormat.GenericDefault);
        }

        e.Handled = true;
    }
}
#endregion

提取选中datagridview中某单元格的值为空时出错

不要用 dataGridView1.Rows[e.RowIndex].Cells[ ].Value.toString();

使用Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[ ].Value进行转换

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值