[問題]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