我們應(yīng)該在 C# Winform 應(yīng)用程序中編寫康威的生命游戲。所以,我用按鈕創(chuàng)建了一個(gè) 10 x 10 的“游戲板”。粉色代表死了,藍(lán)色代表活著。為了便于訪問,每個(gè)按鈕都以其在游戲板上的坐標(biāo)命名(例如 x1y1、x10y9、x5y5)。但后來我意識(shí)到我不知道如何遍歷 100 個(gè)表單控件并根據(jù)每個(gè)人的顏色/值對(duì)每個(gè)人執(zhí)行操作。在 HTML/Javascript 中,我使用了以下循環(huán):for(row = 1; row <= 10; row++){ board[row] = new Array(10); //creates a 10 by 10 matrix to store the board's values in it. for(col = 1; col <= 10; col++){ var position = "x" + row + "y" + col; var val = parseInt(document.board.elements[position].value); board[row][col] = val; }}所以問題是:有沒有辦法通過字符串而不是變量名來調(diào)用表單控件?之類的東西之類Form1.getControlByName(string)的?
1 回答

慕哥9229398
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以設(shè)置Name
您創(chuàng)建的每個(gè) Button 控件的屬性。例如,讓這button
是對(duì) Button 控件的引用:
button.Name = "11";
然后你可以使用Control.ControlCollection.Find方法來找到你正在尋找的按鈕控件,如下所示:
Button button = this.Controls.Find("11", true).FirstOrDefault() as Button;
this
是對(duì) Form 實(shí)例的引用。您需要調(diào)用FirstOrDefault
,因?yàn)?code>Find返回一個(gè)名為 的控件數(shù)組"11"
。最后,您必須使用as運(yùn)算符將Control
對(duì)象轉(zhuǎn)換為Button
. 如果轉(zhuǎn)換失敗,則值為button
null。所以在這個(gè)轉(zhuǎn)換之后你必須檢查它是否不為空:
if(button != null) { // place here your code }
- 1 回答
- 0 關(guān)注
- 114 瀏覽
添加回答
舉報(bào)
0/150
提交
取消