最佳解答者
動態建立物件時的屬性存取

問題
解答
-
各位好, 小弟已找到替代方法
這是在建立 numericupdown 中的屬性 Name的code
this.ManualCalValueNumericUpDown[i].Name = ManualCalButon_Prefix[i] + "_NumericUpDown";
但是在動態建立這個numericupdown 時候, compiler 不認得我塞給他的Name (ManualCalButon_Prefix[i] + "_NumericUpDown";)
所以我直接用ㄧ開始宣告出來的 this.ManualCalValueNumericUpDown[i].Name 就過了....
謝謝
- 已標示為解答 菜鳥1112號 2011年10月3日 上午 06:10
所有回覆
-
應該是你的屬性名稱寫錯了, 您可以這樣寫:
Button btn=new Button();
btn.Text="OK";
this.Controls.Add(btn);
- 已提議為解答 小歐ouMVP, Moderator 2011年10月3日 上午 02:07
-
for (i = 0; i < ManualCalNum ; i++){this.ManualCalTuneButton[i] = new Button();this.ManualCalTableLayoutPanel.Controls.Add(this.ManualCalTuneButton[i], 2 + (i / ManualCalNum) * 2, (i % ManualCalNum) + 1);this.ManualCalTuneButton[i].Text = "TUNE";}
模擬了一下您的程式碼,可以通過編譯Button[] ManualCalTuneButton = new Button[2]; int ManualCalNum = 2; private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < ManualCalNum; i++) { this.ManualCalTuneButton[i] = new Button(); this.ManualCalTableLayoutPanel.Controls.Add(this.ManualCalTuneButton[i], 2 + (i / ManualCalNum) * 2, (i % ManualCalNum) + 1); this.ManualCalTuneButton[i].Text = "TUNE"; } }
請檢查看看ManualCalTuneButton陣列大小有沒有宣告,型別是不是Button
Shadowと愉快なコード達
- 已編輯 Shadow .Net 2011年10月3日 上午 02:06
-
private void ICTAT_Manual_CalButton_Click(object sender, EventArgs e){if (((Button)(sender)).Name == "ICTAT" + "_CalButton_CalButton"){WriteReg(1, 0x1, 0x0041, Delay500ms);DumpUSBProtocol();}else if (((Button)(sender)).Name.Substring(0,20) == "ManualCalTuneButton_"){//ICTAT_NumericUpDown.Value++;}elseWriteReg(1, 0x1, 0x0004, Delay500ms);}在我中間mark掉 //ICTAT_NumericUpDown.Value++; 此行會出錯這個ICTAT_NumericUpDown也是透過相同手法建立的item
-
各位好, 小弟已找到替代方法
這是在建立 numericupdown 中的屬性 Name的code
this.ManualCalValueNumericUpDown[i].Name = ManualCalButon_Prefix[i] + "_NumericUpDown";
但是在動態建立這個numericupdown 時候, compiler 不認得我塞給他的Name (ManualCalButon_Prefix[i] + "_NumericUpDown";)
所以我直接用ㄧ開始宣告出來的 this.ManualCalValueNumericUpDown[i].Name 就過了....
謝謝
- 已標示為解答 菜鳥1112號 2011年10月3日 上午 06:10