我想这样做:
Const COLOR_GREEN = &H00FF00
Me.Label1.BackColor = COLOR_GREEN
然而,有一个问题是vb自动决定将& H00FF00转换为& HFF00,所以我得到了这个:
Const COLOR_GREEN = &HFF00
Me.Label1.BackColor = COLOR_GREEN
小数值COLOR_GREEN现在是-256而不是65280,所以背景是黑色而不是绿色!这很烦人,因为我可以使用#00FF00在表单设计模式中很好地设置颜色。
在表单设计模式下将颜色设置为#00FF00的等价物是什么?
答案 0 :(得分:23)
你试过文字&H0000FF00&
吗?以下代码对我来说很合适:
Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN
当然,VB 6自动将其折叠为此,这仍然可以正常工作,因为这两个值完全等效数字:
Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN
诀窍是该值需要声明为Long
,而不是Integer
。将&符号(&
)放在数字后面文字完成了这一点。
这也解释了为什么你看到-256的值而不是你期望的65280。值65280太长而无法放入Integer
,当它溢出该数据类型时,VB 6再次将其包裹起来,产生-256。
值得注意的是,VB 6中的十六进制文字将不等同于您可能从Web和HTML编程中熟悉的那些。而不是你在那里找到的RRGGBB表示法, VB 6使用BBGGRR表示法,或&H00BBGGRR&
,与原始Win32 COLORREF
结构相同,其中低位字节为红色而不是蓝色。
当然,请注意,对于标准颜色值,例如您在此处显示的颜色值,您可能最好使用VB文字,例如vbGreen
:
Me.Label1.BackColor = vbGreen
答案 1 :(得分:5)
您无法使用vb的十六进制表示法保留前导零。
数字文字(包括&H*
)默认为16位整数,对于32位常量文字后缀,&
隐式表示其长;
Const COLOR_GREEN = &HFF00&
?COLOR_GREEN
65280
答案 2 :(得分:1)
您可以使用Colortranslator
dim myColor as new Color
myColor=ColorTranslator.fromHTML("#ff0000") 'Red color