C# DataGridView 设置背景色被重置如何解决?

DataGridView dgview.Rows[0].Cells[0].Style.BackColor = System.Drawing.Color.FromName("Red");
Form form1.Controls.Add(dgview);
先对 DataGridView 的单元格的BackColor 赋值,然后再将DataGridView 加入到另一个控件里面去的时候,BackColor 就会被重置为0 ,有办法让保持 BackColor 的设置吗?
我需要对每一个单元格进行单独设置, 现在的问题是设置的 Style似乎会在DataGridView 重新加入另一个空间的时候被重置, 但是单元格的数据没有被重置, 这里很奇怪。。。
我的是 winForm 程序, VS2005
=============
To zaocha321: 这里是需要根据数据动态处理的。

To 450475281: 实际上不是 Form,是需要动态在不同的TabPage中转移这个DataGridView ,改变颜色以后,可能会需要再次转移DataGridView,所以就必须每次都重新改变颜色, 但是因为数据量非常大,所以这样速度方面就不太好。

To bubble: 您的方法讲到了要点上, 但是因为上面需要在不同TabPage中反复转移,而且DataGridView 的数据量非常大, 所以效果也不太好。

=================
这样看来似乎没有什么办法保持 BackColor 不需要重设咯?

我测试了以下,column的DefaultStyle可以自动带到第二个单元格,
Row的DefaultStyle和Cell的Style都不能带到第二个单元格
我试了一种方法,有点麻烦,不过可以实现你的效果。

把你修改单元格颜色的代码,抽成一个公共类的静态方法

public class Class1
{
public static void SetColr(System.Windows.Forms.DataGridView gdv)
{
if(gdv.Rows.Count > 0 && gdv.Columns.Count > 0)
{
gdv.Rows[0].Cells[0].Style.BackColor = System.Drawing.Color.SeaGreen;
}
}
}

DataGridView初始载入数据执行一次,DataGridView添加到另一个Form的时候在Form的Form_Load里面调用一次.
因为不在新的Form代码域,不能直接调用

private void button2_Click(object sender,EventArgs e)
{
Form2 f2 = new Form2();
f2.Load += new EventHandler(f2_Load);

// dataGridView1添加入f2的Controls时,会自动从this.Controls里面移出的,一旦dataGridView从this.Controls里面移出
// Row[0].Cells[0]的Style就失效了
this.Controls.Remove(this.dataGridView1);

f2.Add(this.dataGridView1);
f2.ShowDialog();
}

void f2_Load(object sender,EventArgs e)
{
Class1.SetColr(this.dataGridView1);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-15
不知道你为什么要吧datagridview 放到一个form1里面,
如果非得这么做,就在Form form1.Controls.Add(dgview);后给datagridview的需要改变颜色的单元格重新赋值就Ok

如果你只是想在Form1里面有个datagridview ,直接拖个datagridview 控件就Ok,然后再Form_laod事件里面写DataGridView dgview.Rows[0].Cells[0].Style.BackColor = ...
第2个回答  2010-09-15
你把style作成方法根据传过来的参数在选择用什么样式
第3个回答  2010-09-15
你可以现在前台设置好吧。

C# DataGridView 设置背景色被重置如何解决?
f2.Load += new EventHandler(f2_Load);\/\/ dataGridView1添加入f2的Controls时,会自动从this.Controls里面移出的,一旦dataGridView从this.Controls里面移出 \/\/ Row[0].Cells[0]的Style就失效了 this.Controls.Remove(this.dataGridView1);f2.Add(this.dataGridView1);f2.ShowDialog();} void f2...

C#中DataGridView重排序后,对它单元格所作的样式(比如改变背景颜色...
你可以在重新排序的时候先获取单元格的颜色值,然后在排序完毕后再给这些单元格赋上相应的颜色值。这里会有些复杂,因为你要判断每个单元格。

C#中DataGridView重排序后,对它单元格所作的样式(比如改变背景颜色...
你需要在每次排序事件发生之后,调用单元格设置的方法.就可以了.也可直接用委托,把方法绑定到排序事件之后.

c# winform 如何取消datagridview的单元格选中的背景色的变化(即选中单...
在选中事件里加入一段代码:让选中的单元格的背景色为其旁边的单元格的背景色就OK 注意在选中事件里加

C#中点击DataGridView列头自动排序后,对单元格所作改变(比如某些行有...
1.在读取数据的时候,设定绑定到了单元格 2.在 CellFormatting(推荐) 事件里改写 如果是1,就需要排序后,重新调用格式设置函数,一一设置 如果是2,应该就不存在这个问题了,因为一般情况下,单元格格式都是随值的变化而变化,这种方式除了是微软推荐外,重点是:节省资源开销,而且灵活自如,速度也不错 ...

C# DataGridViewButtonColumn 按键的背景色怎样修改?
首先点开智能小三角,编辑列,在DataGridViewButtonColumn 列里面的外观DataGridViewCellStyle 后面的小按钮打开,修改BackColor值即可。

C#DataGridView的行列表头背景色字体色不起作用
当你使用 时发现,不起作用,原因是DataGridView默认表头可视化风格是为true的:将其设置为false,前面的表头字体背景颜色设置就起作用了。但是表头风格就有点变样了。

c# 如何改变datagridview里的字体颜色
1 <datagridview ForeColor="Red" \/> 2、后台方法 这里需要先对datagridview命名。把forecolor设置为想要的颜色即可,例子中设置为红色。 1 2 datagridview datagridview1=new datagridview(); dataGridView1.ForeColor = Color.Red; 本回答由电脑网络分类达人 系统推荐 举报| 答案纠错 | 评论 1 6 jiafeimao...

C# datagridview的下拉条颜色变成黑色的,怎么实现
尝试把dataGridView控件的背景色设置为black试试。

C#Winform datagridview控件,想让像是的内容奇数行背景颜色为灰色怎么...
}private void button1_Click(object sender, EventArgs e){for (int i = 0; i <; dataGridView1.Rows.Count; i++){\/\/遍历DataGridView的每一行if (i%2 ,= 0){\/\/如果是奇数行\/\/设置此行的背景颜色为灰色dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Gray;}}}private...

相似回答