datagridview 中恢复行颜色

时间:2022-09-28 15:46:49
之前有操作将某些单元格或是行的颜色做了修改
datagridview1.Rows[s].Cells[i].Style.BackColor = Color.Blue;
现在想恢复datagridview1的原本的行和单元格默认颜色 设置什么属性可以实现?

28 个解决方案

#1


如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.

#2


引用 1 楼 jsoner 的回复:
如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.


我的grid奇数偶数行默认颜色不一样

#3


引用 1 楼 jsoner 的回复:
如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.



没有离开是事件 而且我需要将整个GRID的所有的行的背景色都恢复到初始状态

#4


颜色里面有一个默认的   default 颜色 这一你试一下   应该可以

#5


引用 4 楼 qianzai5765638 的回复:
颜色里面有一个默认的   default 颜色 这一你试一下   应该可以

没有

#6


==  我试一下

#7


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
     {
e.Row.Attributes.Add("onmouseover", "if(this!=prevselitem){this.style.backgroundColor='#Efefef'}");//当鼠标停留时更改背景色 
e.Row.Attributes.Add("onmouseout", "if(this!=prevselitem){this.style.backgroundColor='#ffffff'}");//当鼠标移开时还原背景色 
     }
    }

#8


续7楼
因为GRID是默认的间隔变色,你可以取得e.RowIndex/2 == 0来判断奇数偶数行,然后再变色.

#9








  /// <summary>
        /// 行颜色变化事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.Red;
        }
        /// <summary>
        /// 变回原来的颜色事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
        }



这样就ok了

#10


ok 了吗

#11


引用 10 楼 qianzai5765638 的回复:
ok 了吗

 
问题是我现在的 grid的选中模式是单元格模式 DefaultCellStyle 只能一个一个单元格恢复?
有没有啥办法把整个 grid样式全部 变为初始状态(里面的值不能丢)

#12


你 想让所有的行都变为初始的颜色吗

#13


引用 12 楼 qianzai5765638 的回复:
你 想让所有的行都变为初始的颜色吗

#14


那你  

写一个循环  

for(int i=0; i<this.dataGridView1.Rows.count;i++ )
{
    this.dataGridView1.Rows[i].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
}

这样效果不达到了吗

#15


qianzai5765638

事情是这样的 我想在一个grid里事先选中某一个单元格 让其所在行变为蓝色(不包括我点击的单元格)
由于我的Gird选中模式必须是选中单元格模式所以无法用.net自带的 DefaultCellStyle.BackColor
属性设置 但是如果我点击了 一个可编辑的单元格 这个单元格会实例化一个textbox 并取grid当前单元格的背景色导致我无法控制 我当前选中的单元格子的颜色

#16


你可以试着实现一下我说的功能 比如说

选中某个单元格 让选中的单元格变为红色 其所在行变为蓝色

#17


引用 16 楼 super84611 的回复:
你可以试着实现一下我说的功能 比如说

选中某个单元格 让选中的单元格变为红色 其所在行变为蓝色


这个被选中单元格可能是可以编辑的单元格。根本无法把红色涂上去

#18


你是想让你点的那个cell 的颜色不是蓝色  是这个问题吗

#19


 private void button2_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.Red;
        }
        /// <summary>
        /// 变回原来的颜色事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
        }


#20


引用 9 楼 qianzai5765638 的回复:
C# code






  /// <summary>
        /// 行颜色变化事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(o……


还有dataGridView1.RowsDefaultCellStyle.ForeColor; 你这里取到的一定是已经变了色的
就是说即便取到也是蓝色 那给他赋值这个颜色就没意义了
        


#21


引用 18 楼 qianzai5765638 的回复:
你是想让你点的那个cell 的颜色不是蓝色 是这个问题吗


你也可以这么理解吧,话说回来就算你想让他变成蓝色也没办法的,除非你再一次点击同一行的其他cell

#22


this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;

#23


试一下Color.Empty!貌似我以前遇到过类似的问题是用它解决的。

#24


这样你试一下 

#25


引用 22 楼 qianzai5765638 的回复:
this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;

引用 23 楼 yu_xiaot 的回复:
试一下Color.Empty!貌似我以前遇到过类似的问题是用它解决的。


这2个 我昨天就试过了 不过还是谢谢谢你

#26


引用 20 楼 super84611 的回复:
引用 9 楼 qianzai5765638 的回复:
C# code






/// <summary>
/// 行颜色变化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(o……


还有data……



这个你试过吗   ?    我怎么就行啊  ?  拿到的值不是已经变成蓝色的值   , 你试过了吗

#27


引用 26 楼 qianzai5765638 的回复:
引用 20 楼 super84611 的回复:
引用 9 楼 qianzai5765638 的回复:
C# code






/// <summary>
/// 行颜色变化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void butt……


你点的是BUTTON事件 而我要写在 dataGridView1_SelectionChanged 里

#28


该回复于2010-09-10 13:52:27被版主删除

#1


如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.

#2


引用 1 楼 jsoner 的回复:
如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.


我的grid奇数偶数行默认颜色不一样

#3


引用 1 楼 jsoner 的回复:
如果GRID是单色,就在离开的时候设回来就行了.
如果是复杂得的颜色,则需用JS取得其颜色,记录下来,然后再还原回去.



没有离开是事件 而且我需要将整个GRID的所有的行的背景色都恢复到初始状态

#4


颜色里面有一个默认的   default 颜色 这一你试一下   应该可以

#5


引用 4 楼 qianzai5765638 的回复:
颜色里面有一个默认的   default 颜色 这一你试一下   应该可以

没有

#6


==  我试一下

#7


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
     {
e.Row.Attributes.Add("onmouseover", "if(this!=prevselitem){this.style.backgroundColor='#Efefef'}");//当鼠标停留时更改背景色 
e.Row.Attributes.Add("onmouseout", "if(this!=prevselitem){this.style.backgroundColor='#ffffff'}");//当鼠标移开时还原背景色 
     }
    }

#8


续7楼
因为GRID是默认的间隔变色,你可以取得e.RowIndex/2 == 0来判断奇数偶数行,然后再变色.

#9








  /// <summary>
        /// 行颜色变化事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.Red;
        }
        /// <summary>
        /// 变回原来的颜色事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
        }



这样就ok了

#10


ok 了吗

#11


引用 10 楼 qianzai5765638 的回复:
ok 了吗

 
问题是我现在的 grid的选中模式是单元格模式 DefaultCellStyle 只能一个一个单元格恢复?
有没有啥办法把整个 grid样式全部 变为初始状态(里面的值不能丢)

#12


你 想让所有的行都变为初始的颜色吗

#13


引用 12 楼 qianzai5765638 的回复:
你 想让所有的行都变为初始的颜色吗

#14


那你  

写一个循环  

for(int i=0; i<this.dataGridView1.Rows.count;i++ )
{
    this.dataGridView1.Rows[i].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
}

这样效果不达到了吗

#15


qianzai5765638

事情是这样的 我想在一个grid里事先选中某一个单元格 让其所在行变为蓝色(不包括我点击的单元格)
由于我的Gird选中模式必须是选中单元格模式所以无法用.net自带的 DefaultCellStyle.BackColor
属性设置 但是如果我点击了 一个可编辑的单元格 这个单元格会实例化一个textbox 并取grid当前单元格的背景色导致我无法控制 我当前选中的单元格子的颜色

#16


你可以试着实现一下我说的功能 比如说

选中某个单元格 让选中的单元格变为红色 其所在行变为蓝色

#17


引用 16 楼 super84611 的回复:
你可以试着实现一下我说的功能 比如说

选中某个单元格 让选中的单元格变为红色 其所在行变为蓝色


这个被选中单元格可能是可以编辑的单元格。根本无法把红色涂上去

#18


你是想让你点的那个cell 的颜色不是蓝色  是这个问题吗

#19


 private void button2_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.Red;
        }
        /// <summary>
        /// 变回原来的颜色事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.Rows[0].DefaultCellStyle.BackColor = this.dataGridView1.RowsDefaultCellStyle.ForeColor;
        }


#20


引用 9 楼 qianzai5765638 的回复:
C# code






  /// <summary>
        /// 行颜色变化事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(o……


还有dataGridView1.RowsDefaultCellStyle.ForeColor; 你这里取到的一定是已经变了色的
就是说即便取到也是蓝色 那给他赋值这个颜色就没意义了
        


#21


引用 18 楼 qianzai5765638 的回复:
你是想让你点的那个cell 的颜色不是蓝色 是这个问题吗


你也可以这么理解吧,话说回来就算你想让他变成蓝色也没办法的,除非你再一次点击同一行的其他cell

#22


this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;

#23


试一下Color.Empty!貌似我以前遇到过类似的问题是用它解决的。

#24


这样你试一下 

#25


引用 22 楼 qianzai5765638 的回复:
this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;

引用 23 楼 yu_xiaot 的回复:
试一下Color.Empty!貌似我以前遇到过类似的问题是用它解决的。


这2个 我昨天就试过了 不过还是谢谢谢你

#26


引用 20 楼 super84611 的回复:
引用 9 楼 qianzai5765638 的回复:
C# code






/// <summary>
/// 行颜色变化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(o……


还有data……



这个你试过吗   ?    我怎么就行啊  ?  拿到的值不是已经变成蓝色的值   , 你试过了吗

#27


引用 26 楼 qianzai5765638 的回复:
引用 20 楼 super84611 的回复:
引用 9 楼 qianzai5765638 的回复:
C# code






/// <summary>
/// 行颜色变化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void butt……


你点的是BUTTON事件 而我要写在 dataGridView1_SelectionChanged 里

#28


该回复于2010-09-10 13:52:27被版主删除