VB问题求解答

刚学VB,觉得蛮有趣的,就自己写着玩,然后我想利用timer控件来控制label中字体颜色的周期性变化,我的代码是:但是运行结果只有红色和绿色,红色的时间较绿色长,代码是... 刚学VB,觉得蛮有趣的,就自己写着玩,然后我想利用timer控件来控制label中字体颜色的周期性变化,我的代码是:

但是运行结果只有红色和绿色,红色的时间较绿色长,代码是
Dim n%, a%

Private Sub Form_Load()
n = 1 '定义n的初值
End Sub

Private Sub Timer1_Timer()
n = n + 1
a = n Mod 4 'a是n整除4的余数
Select Case Index '通过判断余数的数值来确定label1中字体的颜色
Case a = 0
Label1.ForeColor = vbRed
Case a = 1
Label1.ForeColor = vbGreen
Case a = 2
Label1.ForeColor = vbBlue
Case a = 3
Label1.ForeColor = H0
End Select
End Sub
请各位懂的大哥大姐不吝赐教!!
展开
 我来答
落叶l无情
2013-11-20 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1420万
展开全部

你用的select case index  ,即根据index的值来选择,而index你未定义也未赋值,故始终有index=0;timer1_timer第一次运行时a=2,此时a=0为false,隐式转换为0,即 case a=0 实际为case 0,符合条件(index=0),执行Label1.ForeColor = vbRed;第二次同第一次,第三次a=0,a=0为true,转换为1,即case a=0 实际为 case 1,不符合条件,跳到下一个case a=1,即case 0,符合条件,执行Label1.ForeColor = vbGreen。另外select case 语句 是顺序判断条件,满足条件执行后,不会继续向下判断条件,而是直接end select。可以看出只有a=0时字体颜色为绿色,其他时间为红色,所以运行结果只有红色和绿色,红色的时间较绿色长。

正确的代码是:

Dim n%, a%
 
Private Sub Form_Load()
n = 1    '定义n的初值
End Sub
 
Private Sub Timer1_Timer()
n = n + 1
a = n Mod 4    'a是n整除4的余数
Select Case a              '通过判断余数的数值来确定label1中字体的颜色
Case 0:
Label1.ForeColor = vbRed
Case 1:
Label1.ForeColor = vbGreen
Case 2:
Label1.ForeColor = vbBlue
Case 3:
Label1.ForeColor = H0
End Select
End Sub

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式