[问题]c# 循环的问题

楼主: kenbill8899 (Yen-j)   2016-10-19 23:34:08
这是我c#程式码
if(trackBar1.Value.ToString()=="0")
{
arr4[0]="0";
arr4[1] = "0";
arr4[2] = "0";
}
if (trackBar1.Value.ToString() == "1")
{
arr4[0] = "0";
arr4[1] = "3";
arr4[2] = "2";
}
if (trackBar1.Value.ToString() == "2")
{
arr4[0] = "0";
arr4[1] = "6";
arr4[2] = "4";
}
想问说因为我光是trackBar1做的判断就有9个(因为太多就撷取一小部分)
而我还有 trackBar2、trackBar3......(共12个)要做同样的判断方式存到
阵列里
大概的情况像下方 如同上面打的 只是有些许差异
if (trackBar2.Value.ToString() == "0")
{
arr5[0] = "0";
arr5[1] = "0";
arr5[2] = "0";
}
if (trackBar2.Value.ToString() == "1")
{
arr5[0] = "0";
arr5[1] = "3";
arr5[2] = "2";
}
想问说有什么快速的作法 能减少程式的撰写
之前想说不知道能不能用
int i=1
while(i<13)
if (trackBari.Value.ToString() == "1")
{
arr5[0] = "0";
arr5[1] = "3";
arr5[2] = "2";
}
但发现不能使用 请问还有其他方法能够减少程式吗
希望有人能够指点我一下 谢谢!!
作者: yeo1987 (Archie)   2016-10-19 23:43:00
判断的部分可以改成switch case
作者: gary0942767 (gary0942767)   2016-10-19 23:53:00
array长度固定的话,可以用array[,]来储存trackbar如果是winform的元件,可以用controls.find来找出指定元件,再搭配转型作判断
作者: YahooTaiwan (超可爱南西我老婆)   2016-10-20 00:09:00
arr5[] 要塞的值有规则吗?
作者: gary0942767 (gary0942767)   2016-10-20 08:47:00
修正一下,如果元件确定存在,可以直接从父层的controls取出,我以textbox举例,有三个元件名称为tbx1-3,用this.controls[tbx1]可以取出tnx1,因为取出来型态为control,所以要转型为textbox,才可以拿来使用程式可以改为,在for底下组出元件名称,用controls[元件名称]取出,然后判断value,将值给进array[,]里
作者: Litfal (Litfal)   2016-10-20 13:14:00
初始化时,把trackbar和array做配对塞到字典里,或是把array指派给trackbar.Tag做配对。
作者: outofyou   2016-10-21 15:24:00
推字典,输入资料与输出资料的对应,除非你有特别规律要不然想简化if的程式码,就是用读取字典的方式来做。
作者: vi000246 (Vi)   2016-10-21 22:18:00
我在java板的这篇你可以看一下 是C# code #1O1jA9lr字典可以扩充 有几个判断就加几个键值
作者: testPtt (测试)   2016-10-22 18:23:00
if要else避免全部if都跑
作者: yzfr6 (扮关二哥!)   2016-10-25 13:53:00
判断式可以用一个函式或Class取代switch case 可以用其它方式取代

Links booklink

Contact Us: admin [ a t ] ucptt.com