DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号

时间:2024-03-30 19:39:32

DataGridView是winfrom一个很强大的控件,但是有些时候这个控件外观需要自己动手重绘。接下是个人在项目中遇到到一些问题。

 

1.不管是给单元格添加序号也好,还是给指定单元格加文本,其实都是重绘某个单元格。

我个人比较喜欢在表单绘画的时候触发他自己的机制去重绘。RowPostPaint。

DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号

直接这个事件里面开始代码。

       private void dgv1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)///dgv1_RowPostPaint事件的名称
        {
             StringFormat StringFormat = new StringFormat() { LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center };///这里设置居中样式


            System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(e.RowBounds.Location.X,
       e.RowBounds.Location.Y, AGING_DETAIL.RowHeadersWidth -4, e.RowBounds.Height);//这里是要获取表头的单元格起始位置,高度宽度,为重绘序列准备。里面的参数下面有图解释

            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
               AGING_DETAIL.RowHeadersDefaultCellStyle.Font, rectangle, AGING_DETAIL.RowHeadersDefaultCellStyle.ForeColor,
               TextFormatFlags.VerticalCenter | TextFormatFlags.Right);///这里是重新绘制行级的某个单元

             Y = this.AGING_DETAIL.GetCellDisplayRectangle(4, e.RowIndex, false).Y;///这里是获取当前行的第4列Y坐标
             X = this.AGING_DETAIL.GetCellDisplayRectangle(4, e.RowIndex, false).X;///这里是获取当前行的第4列X坐标
             W = this.AGING_DETAIL.GetCellDisplayRectangle(4, e.RowIndex, false).Width;///这里是获取当前行的宽度
             H = this.AGING_DETAIL.GetCellDisplayRectangle(4, e.RowIndex, false).Height;///这里是获取当前行的高度度
             System.Drawing.Rectangle rectangle1 = new System.Drawing.Rectangle(X,Y,
                 W, H);
             e.Graphics.DrawString(AGING_DETAIL.Rows[e.RowIndex].Cells[4].Value.ToString()+"%",
             AGING_DETAIL.RowHeadersDefaultCellStyle.Font, new SolidBrush(AGING_DETAIL.RowHeadersDefaultCellStyle.ForeColor), rectangle1, StringFormat);///这里是为我们刚刚获取的单元范围内绘制文本,上面的序列也可以用这个方法。个人比较喜欢这个。
        }

///一下对上面一下参数图解一下

DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号

 

~~~

DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号

~~~~

DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号

----------------------------------------------------------------------------------小尾巴分割------------------------------------------------------------------------

菜鸟的记录也是进步~如果对你有所帮助,那就小小的赞一下吧。-----来自没有代码的程序员小萝卜