Switch-Case块没有按预期执行?
问题描述:
在下面的代码片断中,我打算在每个计时器滴答事件中使用,它应该属于switch语句的'next'情况。 但是,正如我跑,它首先通过Odd案件,然后甚至案件?Switch-Case块没有按预期执行?
我正在犯什么错误?
private void timer1_Tick(object sender, EventArgs e)
{
switch (SCROLL_SCREEN_NO)
{
case 0:
SCROLL_SCREEN_NO = 1;
break;
case 1: label1.Text = "Param1";
label2.Text = "1234";
SCROLL_SCREEN_NO = 2;
break;
case 2: label1.Text = "Param2";
label2.Text = "5678";
SCROLL_SCREEN_NO = 3;
break;
case 3: label1.Text = "Param3";
label2.Text = "9012";
SCROLL_SCREEN_NO = 0;
break;
case 4: label1.Text = "Param4";
label2.Text = "0";
SCROLL_SCREEN_NO = 5;
break;
case 5: label1.Text = "Param5";
label2.Text = "02";
SCROLL_SCREEN_NO = 0;
break;
default: { break; }
}
}
答
你的代码是真的出错的,试试这个:
private void timer1_Tick(object sender, EventArgs e)
{
string[] L1Keys = new string[]{"Param1", "Param2","Param3","Param4","Param5"};
string[] L2Keys = new string[]{"1234", "5678","9012","0","02"};
label1.Text = L1Keys[SCROLL_SCREEN_NO];
label2.Text = L2Keys[SCROLL_SCREEN_NO];
if(SCROLL_SCREEN_NO >=0 && SCROLL_SCREEN_NO<=4)
SCROLL_SCREEN_NO = (SCROLL_SCREEN_NO+1) % 5;
}
答
您的代码似乎没问题。 您是否在此计时器滴答事件之外使用SCROLL_SCREEN_NO? 如果是这样,那么请再次查看使用SCROLL_SCREEN_NO的代码。
+0
SCROLL_SCREEN_NO只在外面初始化。休息一切只在timer1_tick完成。 – jrk007 2014-09-29 05:08:44
不正确调试,而不是编码相关样品。开关通过显示元素。在你的代码中弄脏你的代码不会去调试它。 – TomTom 2014-09-29 04:56:41
你的滴答计数是多少?我怀疑在为下一次执行设置SCROLL_SCREEN_NO之前计时器会打勾。 – bit 2014-09-29 04:57:28
情况3看起来不正确,它将其设置回0 – 2014-09-29 04:58:22