我在我们大学忙于AI项目。该项目是关于为15个益智游戏编写AI。该程序必须解决难题,但它需要显示计算机的步骤。我的代码工作,我的谜题解决,但由于某种原因,我的文本不会更新表单本身。我无法理解为什么我的文本不会更新,因为我的代码应该自动执行。这是我的最后一个错误,如果我可以修复它,那么我的项目就完成了。
以下是我的按钮文字更新的代码
private void setButtText()
{
Button[,] temp = new Button[4, 4];
temp = (Button[,])buttOpen[0];
for (int i = 0; i <= 3; i++)
for (int j = 0; j <= 3; j++)
butt[i, j] = temp[i, j];
}
变量butt
是一个二维数组,其地址设置为我表单上的每个按钮,例如:
butt[0,0] = button1;
butt[0,1] = button2;
...
...
butt[3,3] = button16;
buttOpen是一个arrayList,它保存计算机可以采取的每个可能移动的按钮组,位置0表示计算机可以采取的最佳移动。
此外,我意识到,如果我设置butt[i,j].Text = temp[i,j].Text
,temp中的文本会以某种方式更改,但按钮会在我的表单上开始更新。我无法理解它是如何可能的,因为我没有更改temp
的文字,如果temp
中的文字改变了我的程序崩溃。如果您对可能存在的问题有任何疑问,请显示我的错误。
感谢您的时间。
弗朗索瓦
答案 0 :(得分:2)
butt[i, j] = temp[i, j];
这不会设置Button1 = temp [x];它会覆盖存储在你的枪托中的参考。
butt[i,j].Text = temp[i,j].Text;
从您的对接阵列获取该位置的按钮并设置其文字,因为您已经设置这些按钮是表单上的按钮,用于更新文本。
大概你更新了buttOpen数组中的文本?因为那是你设定的温度。
请注意以下几行:
Button[,] temp = new Button[4, 4];
temp = (Button[,])buttOpen[0];
可以压缩成
Button[,] temp = (Button[,])buttOpen[0];
您实际上并未使用新创建的按钮阵列。它崩溃的错误可能与你如何设置buttOpen
有关