合作联系
  wanwqing@vip.163.com
  0790-XXXXXXX
关于实验室
DataGridView 背景色交叉变更
发布者:SYS   时间:2015-10-10 22:59:42   浏览次数:182

由于DataGridView行的背景色交叉变更比较简单,我在此就不说了,下面我说一下关于DataGridView列的背景色交叉变更方面的一些方法。

设定DataGridView全部单元格的Style

DataGridView内所有单元格的Style变更,可以使用DataGridView对象的DefaultCellStyle属性实现。

如下面的例子,DataGridView中所有单元格的背景色设定为黄色

//包含Header所有的单元格的背景色为黄色

DataGridView1.DefaultCellStyle.BackColor = Color.Yellow;

DataGridView.DefaultCellStyle属性可以对包含Header所有单元格的Style进行变更设定,对除Header以外所有单元格的Style进行变更,可以使用DataGridView.RowsDefaultCellStyle属性实现

// Header以外所有的单元格的背景色为黄色

DataGridView1.RowsDefaultCellStyle.BackColor = Color.Yellow;

变更某一个单元格的Style

DataGridViewCell.Style属性可以对单一的单元格的Style进行变更设定。

如下面的例子,只对(0, 0)单元格的背景色设定为粉红色。

//(0, 0)单元格的背景色为粉色

DataGridView1[0, 0].Style.BackColor = Color.Pink;

变更被指定的列、行的单元格的Style

DataGridViewColumn.DefaultCellStyle属性,可以对列的单元格Style进行变更设定。DataGridViewRow.DefaultCellStyle属性,可以对行的单元格Style进行变更设定。

如下面的例子,第一列的单元格的背景色为淡蓝色,第一行的单元格的背景色为淡灰色。

//索引0列的单元格的背景色为淡蓝色

DataGridView1.Columns[0].DefaultCellStyle.BackColor = Color.Aqua;

//索引0行的单元格的背景色为淡灰色

DataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.LightGray;

变更奇数行的单元格Style

DataGridView.AlternatingRowsDefaultCellStyle属性,可以变更DataGridView的奇数行的单元格Style。

如下面的例子,奇数行的单元格的背景色设定为黄绿色

//奇数行的单元格的背景色为黄绿色

DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.GreenYellow;

变更列Header、行Header的单元格Style

列Header的单元格style的变更,可以使用,DataGridView.ColumnHeadersDefaultCellStyle属性实现。行Header的单元格Style的变更,可以使用DataGridView.RowHeadersDefaultCellStyle属性实现。但是,Header的是左侧的单元格需要通过DataGridView.TopLeftHeaderCell属性,取得的DataGridViewHeaderCell对象的单元格Style进行设定。

如下面的例子,列Header的背景色为象牙色,行Header的背景色为橙色。

[C#]

//列Header的背景色为象牙色

DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Ivory;

//行Header的背景色为橙色

DataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.Lime;

补充:每个Header单元格的单元格Style,可以使用这一些的方法取得,和一般的单元格一样,可以使用Style属性变更。

关于优先顺序

设定单元格Style的属性有优先顺序的。顺序从高到低如下所示。

1. DataGridViewCell.Style

2. DataGridViewRow.DefaultCellStyle

3. DataGridView.AlternatingRowsDefaultCellStyle

4. DataGridView.RowsDefaultCellStyle

5. DataGridViewColumn.DefaultCellStyle

6. DataGridView.DefaultCellStyle

接下来是Header的单元格Style属性的优先顺序。

1. DataGridViewCell.Style

2. DataGridView.RowHeadersDefaultCellStyle

3. DataGridView.ColumnHeadersDefaultCellStyle

4. DataGridView.DefaultCellStyle

单元格本身的设定的Style是最优先的。

关于继承

比如说当DataGridViewCell.Style属性没有设定单元格Style时,而DataGridViewRow.DefaultCellStyle有设定时,DataGridViewRow.DefaultCellStyle的单元格Style会被DataGridViewCell.Style继承使用。

「单元格Style没有设定」的意思是,使用单元格Style属性取得的对象属性没有变更。或者,虽然变更了,但设定为Empty、Null、NotSet,所以值被继承了。比如说,单元格Style的BackColor设定为Color.Empty是时,优先顺序低的单元格Style属性就会继承BackColor的设定值。所以,单元格Style自身的设定和被继承的设定有区别。

比如说,DataGridViewRow.DefaultCellStyle的BackColor设定为Color.Red,DataGridViewCell.Style的BackColor设定为Color.Empty时,DataGridViewCell.InheritedStyle的设定会变为Color.Red。

下面的例子是,对单元格Style属性的BackColor进行多种变更,检测列、行等会被继承为何种设定

//第一列为淡蓝色

DataGridView1.Columns[0].DefaultCellStyle.BackColor = Color.Aqua;

//所有的列的背景色为黄色

DataGridView1.RowsDefaultCellStyle.BackColor = Color.Yellow;

//单数行为黄绿色 DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.GreenYellow; //第三行为粉红色

DataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.Pink;

//取得本身的单元格Style和继承的单元格Style的背景色

//第一列"[Aqua]"和"[Aqua]"被表示

Console.WriteLine(DataGridView1.Columns[0].DefaultCellStyle.BackColor);

Console.WriteLine(DataGridView1.Columns[0].InheritedStyle.BackColor);

//第一行"[Empty]"和"[Yellow]"被表示

Console.WriteLine(DataGridView1.Rows[0].DefaultCellStyle.BackColor);

Console.WriteLine(DataGridView1.Rows[0].InheritedStyle.BackColor);

//第二行"[Empty]"和"[GreenYellow]"被表示

Console.WriteLine(DataGridView1.Rows[1].DefaultCellStyle.BackColor);

Console.WriteLine(DataGridView1.Rows[1].InheritedStyle.BackColor);

//第三行"[Pink]"和"[Pink]"被表示

Console.WriteLine(DataGridView1.Rows[2].DefaultCellStyle.BackColor);

Console.WriteLine(DataGridView1.Rows[2].InheritedStyle.BackColor);

//(0, 3)"[Empty]"和"[Pink]"被表示

Console.WriteLine(DataGridView1[0, 2].Style.BackColor);

Console.WriteLine(DataGridView1[0, 2].InheritedStyle.BackColor);