看板 C_Sharp 關於我們 聯絡資訊
大家好,小弟我想寫一個陣列來儲存form上的多個text.box 以下是我寫的方式: Int64[,] Rdata = new Int64[3, 5]; for (int T = 0; T < Rdata.GetUpperBound(1); T++) { for (int t = 0; t < Rdata.GetUpperBound(0); t++) { //設定一個n的變數讀取全部的textbox int n = 0; n++; Rdata[t, T] = Convert.ToInt64(textBox1.Lines[n].Split(' ')); } } 問題: Rdata[t, T] = Convert.ToInt64(textBox1.Lines[n].Split(' ')); 這一段我是看板上的文章後所寫的,目的是要讀取form上共15個textbox 並將數值放入陣列.但執行時會出現 "引索在陣列的界限以外". 但我不知道要如何修改!! 請大家指教一下,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.245.147 ※ 編輯: kidnaper 來自: 114.47.245.147 (03/13 22:39)
qwer820404:你的n值會超過 因為你先 ++ 在去抓值 會有lines[16] 03/14 01:16
qwer820404:把n++移到Rdata那行的後面就好了^^ 03/14 01:16
qwer820404:陣列起始是從0開始哦ㄎㄎ 03/14 01:17
ssccg:textBox1.Lines[n] 看起來是讀取 textBox1裡面的各行 03/14 09:41
ssccg:並不是你要的讀取各個textBox吧? 03/14 09:41
ssccg:假設你的textBox是叫textBox1、textBox2、textBox3 ...的話 03/14 09:54
ssccg:form.Controls.Find("textBox" + n, true) 才是各textBox 03/14 09:55
kidnaper:謝謝q大!!N++已經移置後方了!! 03/14 11:11
kidnaper:改成Rdata[t, T] = Form.Contorls.find("textbox" + n, 03/14 11:12
kidnaper:true); 後他說不包含Controls的定義,我是否還要命名空間? 03/14 11:13
qwer820404:記得要轉型 所以會變成 03/14 22:48
qwer820404:因為你現在find之後,程式不知道你找到的是哪一種 03/14 22:50
qwer820404:Textbox txt = (TextBox)Form.Controls.find("textbox" 03/14 22:51
qwer820404:+n, true); 03/14 22:52
qwer820404:Rdata[t,T]=txt.Text <Text這屬性才是抓值哦> 03/14 22:52
qwer820404:記得每段後面要加分號ㄎ 03/14 22:53