我一直在寻找一段时间,我找不到任何可以帮助我解决问题的东西,但对不起,如果我错过了一些东西。二维文本框数组导致早期循环退出
因此对于学校我们必须学习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