[問題]c# 迴圈的問題

看板C_Sharp作者 (Yen-j)時間7年前 (2016/10/19 23:34), 7年前編輯推噓9(9011)
留言20則, 8人參與, 最新討論串1/1
這是我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"; } 但發現不能使用 請問還有其他方法能夠減少程式嗎 希望有人能夠指點我一下 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.99.173 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1476891250.A.573.html

10/19 23:43, , 1F
判斷的部分可以改成switch case
10/19 23:43, 1F
謝謝您的建議!!

10/19 23:53, , 2F
array長度固定的話,可以用array[,]來儲存
10/19 23:53, 2F

10/19 23:57, , 3F
trackbar如果是winform的元件,可以用controls.find
10/19 23:57, 3F
請問您能夠講詳細一點嗎 因為我有點不太懂 希望你能教學一下

10/19 23:57, , 4F
來找出指定元件,再搭配轉型作判斷
10/19 23:57, 4F

10/20 00:09, , 5F
arr5[] 要塞的值有規則嗎?
10/20 00:09, 5F
基本上要看trackbar讀到什麼 arr5才會決定存什麼 ※ 編輯: kenbill8899 (27.246.72.141), 10/20/2016 00:15:37 ※ 編輯: kenbill8899 (27.246.72.141), 10/20/2016 00:20:17 ※ 編輯: kenbill8899 (27.246.72.141), 10/20/2016 00:21:34

10/20 08:47, , 6F
修正一下,如果元件確定存在,可以直接從父層的contr
10/20 08:47, 6F

10/20 08:47, , 7F
ols取出,我以textbox舉例,有三個元件名稱為tbx1-3,
10/20 08:47, 7F

10/20 08:47, , 8F
用this.controls[tbx1]可以取出tnx1,因為取出來型態
10/20 08:47, 8F

10/20 08:47, , 9F
為control,所以要轉型為textbox,才可以拿來使用
10/20 08:47, 9F

10/20 09:00, , 10F
程式可以改為,在for底下組出元件名稱,用controls[
10/20 09:00, 10F

10/20 09:00, , 11F
元件名稱]取出,然後判斷value,將值給進array[,]裡
10/20 09:00, 11F

10/20 13:14, , 12F
初始化時,把trackbar和array做配對塞到字典裡,或是把
10/20 13:14, 12F

10/20 13:15, , 13F
array指派給trackbar.Tag做配對。
10/20 13:15, 13F

10/21 15:24, , 14F
推字典,輸入資料與輸出資料的對應,除非你有特別規律
10/21 15:24, 14F

10/21 15:25, , 15F
要不然想簡化if的程式碼,就是用讀取字典的方式來做。
10/21 15:25, 15F

10/21 22:18, , 16F
我在java板的這篇你可以看一下 是C# code #1O1jA9lr
10/21 22:18, 16F

10/21 22:19, , 17F
字典可以擴充 有幾個判斷就加幾個鍵值
10/21 22:19, 17F

10/22 18:23, , 18F
if要else避免全部if都跑
10/22 18:23, 18F

10/25 13:53, , 19F
判斷式可以用一個函式或Class取代
10/25 13:53, 19F

10/25 13:53, , 20F
switch case 可以用其它方式取代
10/25 13:53, 20F
文章代碼(AID): #1O1v9oLp (C_Sharp)