首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

最近经常看到关于DataGridView的Cell背景色、合并的提问,发个源代码解决方案

2012-02-23 
最近经常看到关于DataGridView的Cell背景色、合并的提问,发个源代码源代码也在blog上发布,有什么问题可以留

最近经常看到关于DataGridView的Cell背景色、合并的提问,发个源代码
源代码也在blog上发布,有什么问题可以留言
http://blog.csdn.net/Samen168/archive/2007/01/23/1491310.aspx

                private   void   Form1_Load(object   sender,   EventArgs   e)
                {
                        DataTable   dt   =   new   DataTable();
                        dt.Columns.Add( "A ");
                        dt.Columns.Add( "B ");
                        dt.Columns.Add( "C ");
                        dt.Columns.Add( "D ");
                        dt.Rows.Add(new   object[]   {   "A1 ",   "B1 ",   "C1 ",   "D1 "   });
                        dt.Rows.Add(new   object[]   {   "A2 ",   "B2 ",   "C2 ",   "D2 "   });
                        dt.Rows.Add(new   object[]   {   "A3 ",   "B3 ",   "C3 ",   "D3 "   });
                        this.dataGridView1.DataSource   =   dt;

                }

                private   void   dataGridView1_CellPainting(object   sender,   DataGridViewCellPaintingEventArgs   e)
                {

                        if   (e.RowIndex   <   0   ||   e.RowIndex   > =   this.dataGridView1.Rows.Count   -   1   ||   e.ColumnIndex   ==   -1)
                        {
                                return;
                        }

                        //   假定需要将C列值为C3的单元格与前一单元格合并
                        if   (e.ColumnIndex   ==   1   &&   this.dataGridView1[e.RowIndex,   e.ColumnIndex   +   1].Value.ToString()   ==   "C3 ")
                        {
                                e.Handled   =   true;
                        }
                        if   (e.ColumnIndex   ==   2   &&     e.Value.ToString()   ==   "C3 ")
                        {


                                DataGridViewCell   preCell   =   this.dataGridView1[e.ColumnIndex   -1,   e.RowIndex];
                                Rectangle   re   =   new   Rectangle(e.CellBounds.Left   -   this.dataGridView1.Columns[e.ColumnIndex   -   1].Width
                                        ,   e.CellBounds.Top,   e.CellBounds.Width   +   this.dataGridView1.Columns[e.ColumnIndex   -   1].Width,   e.CellBounds.Height);
                                e.Graphics.FillRectangle(Brushes.White,     re);

                                Pen   pen   =   new   Pen(this.dataGridView1.BackgroundColor,1);
                                pen.DashStyle   =   System.Drawing.Drawing2D.DashStyle.Solid;
                                e.Graphics.DrawLine(pen,   re.X,   re.Y   +   re.Height-1,   re.X   +   re.Width,   re.Y   +   re.Height-1);
                                e.Graphics.DrawLine(pen,   re.X   +   re.Width   -1,   re.Y   ,   re.X   +   re.Width   -1,   re.Y   +   re.Height);

                                SizeF   strSize   =   e.Graphics.MeasureString(e.Value.ToString(),   this.dataGridView1.Font);
                                e.Graphics.DrawString(e.Value.ToString(),   this.dataGridView1.Font
                                        ,   Brushes.Black,   re.X,   re.Y   +   (re.Height   -   strSize.Height)   /   2);

                                e.Handled   =   true;
                        }
                }

                private   void   dataGridView1_CellFormatting(object   sender,   DataGridViewCellFormattingEventArgs   e)
                {
                        if(e.RowIndex   !=   -1   &&   e.ColumnIndex   ==   1   &&   e.Value   !=   null   &&   e.Value.ToString()   ==   "B1 ")
                        {
                                e.CellStyle.BackColor   =   Color.Red;


                                e.CellStyle.ForeColor   =   Color.Blue;
                                e.CellStyle.SelectionBackColor   =   Color.BlueViolet;
                        }
                }

        }

[解决办法]
呵呵,有意思,看看先:)
[解决办法]
lz辛苦了,研究一下
[解决办法]
to 楼主:
借宝地问个问题
winform中加了DataGridView等一些控件,
相對於dephi,pb的datawindow,我老觉得窗口绘制的較慢
[解决办法]
有点意思。。

[解决办法]
顶个先!
[解决办法]
刷新还是有点问题,不过还行:)
[解决办法]
先顶后看好习惯
[解决办法]
显示还是存在一些问题,当双击被合并的空白区域时,被隐藏的数据又显示出来了
还期待老大进一步完善

[解决办法]
jf先!

热点排行