我一直在尋找一段時間,我找不到任何可以幫助我解決問題的東西,但對不起,如果我錯過了一些東西。二維文本框數組導致早期循環退出
因此對於學校我們必須學習VB並製作遊戲,並且我選擇了製作Sudoku。我發現VB易於理解,所以我決定嘗試一種不同的語言,看看它是否相同。 C#是我的選擇。我決定再次開發Sudoku遊戲並將其與我的VB遊戲進行比較。
在VB代碼中,我能夠做出的所有組成9x9的網格從代碼文本框的數組:
For Y = 0 to 8
For X = 0 to 8
Grid(X, Y) = New Windows.Forms.TextBox
Pencil(X, Y) = New Windows.Forms.TextBox
With Grid(X, Y)
.BackColor = Grid(X, Y).BackColor
.Name = Asc(97 + X) & Y + 1
.Location = New System.Drawing.Point(35 + 50 * X + (FindBox(X) - 1) * 15, 50 + 50 * Y + (FindBox(Y) - 1) * 15)
.Size = New System.Drawing.Size(50, 50)
.Multiline = True
.MaxLength = 1
.Font = New Font(Grid(X, Y).Font.Name, Grid(X, Y).Font.Size + 10)
.TextAlign = HorizontalAlignment.Center
.TabIndex = (X + 1) + (Y * 9) + 1
.BorderStyle = BorderStyle.FixedSingle
End With
Me.Controls.Add(Grid(X, Y))
next
next
這意味着我可以很容易地引用數獨文本框的爲網格座標在數組中。我試圖在C#中複製這一跑進一個問題幾乎立即
public partial class Form1 : Form
{
TextBox[,] Grid = new TextBox[8,8];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int Y = 0; Y < 9; Y++)
{
for (int X = 0; X < 9; X++)
{
TextBox TBox = new TextBox();
Grid[X, Y] = TBox;
TBox.Location = new Point(50 + X * 100, 50 + Y * 50);
this.Controls.Add(TBox);
}
}
}
此代碼運行,但由於某種原因,它只能運行,直到Y = 7,然後停止和不循環任何多次。此代碼工作正常,直到我嘗試添加任何將文本框鏈接到數組(在這種情況下Grid [X,Y] = TBox)。我已經嘗試過了,而不使用TBox(並且直接使用數組,但同樣的問題仍然存在)。
只是想知道是否有人可以啓發我爲什麼添加行「Grid [X,Y] = TBox;」可以完全毀滅一個嵌套的循環。
在此先感謝,對不起,如果我沒有說夠多/說得太多。
你是什麼意思「停止運行」是什麼意思?這是否意味着拋出異常?你能告訴你如何初始化Grid字段/變量嗎? – 2014-08-31 08:22:18
對不起,我以爲我複製了所有。 我的意思是停止運行它。它不會給我任何錯誤,它不會第8次運行它,並且不會多次運行第一次for循環。 我做了一個列表框,顯示每個迭代的X和Y值,它顯示的全部是: (0,0),(1,0),(2,0),(3,0), (4,0),(5,0),(6,0),(7,0)。在那裏我好像擺脫了那一行,它繼續所有X和Y的值。 – Lolop 2014-08-31 08:31:36