Ara*_*ash -1 c# exception-handling winforms
我在第一行评论中采用了这个错误,问题是什么?
private void pictureBox34_Click(object sender, EventArgs e)
{
if (pictureBox34.Image == chess9.Properties.Resources.siyahsah2)
{
f();
}
}
public void picarray()
{
pic[0, 0] = pictureBox54;
pic[0, 1] = pictureBox64;
pic[0, 2] = pictureBox48;
pic[0, 3] = pictureBox42;
pic[0, 4] = pictureBox34;
pic[0, 5] = pictureBox26;
pic[0, 6] = pictureBox18;
pic[0, 7] = pictureBox8;
pic[1, 0] = pictureBox1;
pic[1, 1] = pictureBox2;
pic[1, 2] = pictureBox3;
pic[1, 3] = pictureBox4;
...
}
public void f()
{
// int i = 0, j = 0;
int x = 3;
int y = 3;
for (int i = 1; i < x; i++)
{
for (int j = 1; j < y; j++)
{
pic[i, j] = new PictureBox();
// pic[i, j] = pic[i + 1, j + 1];
pic[i, j].Image = chess9.Properties.Resources.siyahsah2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我碰巧读了你以前的问题,所以如果我理解正确,这是一个国际象棋游戏的实现.
我建议您对设计进行一些更改,而不是尝试修复此代码中的异常.
主要变化:将游戏板状态的表示与UI层分开.如果我理解正确,您使用PictureBox对象数组来表示板上的碎片.如果编写代表板,片段及其所有操作的类,然后编写可在窗口中显示这些类的单独代码,并通过UI从用户处获取命令,则可能会更好.
当您通过操纵UI对象实现棋子移动和棋盘更新时,您必然会犯更多错误并花费更多时间进行调试.
我希望有帮助......