計算機數字鍵盤、井字棋棋盤等介面包含多個功能相同的控制項。逐一手寫建立程式碼冗長且難維護,控制項陣列為最佳解決方案。
Button[] buttons = new Button[9];
private void CreateButtonArray() {
for (int i = 0; i < 9; i++) {
buttons[i] = new Button(); // 必須實例化每個元素
buttons[i].Location = new Point(100 + 50 * (i % 3), 100 + 50 * (i / 3));
buttons[i].Name = "btnTest";
buttons[i].Size = new Size(48, 48);
buttons[i].Text = i.ToString();
buttons[i].Click += new EventHandler(Buttons_Click); // 統一事件處理
this.Controls.Add(buttons[i]); // 加入表單顯示
}
}
private void Buttons_Click(object sender, EventArgs e) {
Button clicked = (Button)sender;
MessageBox.Show(clicked.Text + " was clicked!");
// 透過 sender 判斷觸發事件的控制項
}
private void Form1_Load(object sender, EventArgs e) {
CreateButtonArray();
}
null,迴圈中必須 new Button()。if 單獨處理。sender 參數識別來源控制項。可將控制項陣列封裝為自訂類別,擴充功能(如狀態管理、樣式統一),甚至建立自訂控制項陣列類別支援更複雜邏輯。
觀察「Windows Form 設計器產生的程式碼」可快速理解 .NET 建立與呈現控制項的流程,進而靈活運用陣列技巧。