nssolsh 发表于 2016-2-1 16:15:00

关于Spread单元格颜色的获取问题

我遇到下面问题:
       我现在做的项目的更新功能需要进行Check,Check分两种,一是需要每行的的CheckBox框选中,另一个就是我遇到的问题。请看以下代码:
       Dim sCLr As Drawing.Color
       sCLr = FpSpread.Sheet(0).Cells(iRow - 1, 0 ).BlackColor
       If sCLr = Drawing.Color.FromArgb(COLOR_EDIT)Then
         ......
       End If
       其中,在另一段代码中已经将 FpSpread.Sheet(0).Cells(iRow - 1, 0 ).BlackColor设置为Drawing.Color.FromArgb(COLOR_EDIT),但现在遇到的问题就是sCLr = Drawing.Color.FromArgb(COLOR_EDIT) 这句代码始终不等。我DeBug过后发现sCLr取到的值大致是 Name={ffffffff},ARGB={255,128,255,255},而Drawing.Color.FromArgb(COLOR_EDIT)取到的值却是Name={N0fffffff},ARGB={0,128,255,255}。
       我现在十分不解,希望哪位大大能够给予解答!

nssolsh 发表于 2016-2-1 16:17:00

补充说明,使用的是spread for asp.net8.0 + VS2013 ,环境是Win7,浏览器是IE11

gw0506 发表于 2016-2-1 16:28:00

这应该是其他地方充了你的设置。你看看前端是不是有其他css样式设置冲了你对于backcolor的设置?
你在IE里debug一下,看看后台设置的颜色值,在前台是不是一致?

nssolsh 发表于 2016-2-2 10:35:00

我对这段代码再次进行了DeBug,Spread单元格初始的颜色值ARGB={255,255,255,255},在执行FpSpread.Sheet(0).Cells(iRow - 1, 0 ).BlackColor=Drawing.Color.FromArgb(COLOR_EDIT)后,颜色值ARGB变成{255,128,255,255},而Drawing.Color.FromArgb(COLOR_EDIT)的ARGB值是{0,128,255,255}。我现在怀疑是不是FpSpread.Sheet(0).Cells(iRow - 1, 0 ).BlackColor并不支持ARGB模式,Drawing.Color.FromArgb(COLOR_EDIT)则是ARGB模式,我在IE浏览中的确发现颜色改变了,但是因为两者模式不同,所以,始终无法相等。还请能够给与解答!

gw0506 发表于 2016-2-2 12:13:00

是这样。目前验证的结果是不管设置什么颜色给Cell的backcolor,backcolor都会把alpha值改成255. 具体原因还不确定,不过你可以尝试这样解决。
用三个参数的方法,不设置alpha值。
Drawing.Color.FromArgb(128,255,255)

nssolsh 发表于 2016-2-3 10:04:00

我这边是将COLOR_EDIT设置成公共的,具体写法是 pubilic COLOR_EDIT AS Integer = &H80FFFF。也就是我这个公共参数不再使用了,是吧?

gw0506 发表于 2016-2-3 11:13:00

用的话,也可以。就是判断的时候,去判断rgb值是否相等,忽略a。
IF sCLr .R = Color.R

nssolsh 发表于 2016-3-3 15:24:00

多谢解答,我的问题解决了,按照您给的方法,直接只设置3个参数,可以进行判断了

gw0506 发表于 2016-3-3 15:29:00

哇,这么久了,你还记得我们,还给我们招呼一声。感动的不要不要的~
页: [1]
查看完整版本: 关于Spread单元格颜色的获取问题