私は人生ゲームをコーディングしてC#を実験し、学んでいます。現在、グリッドオーバーレイを作成するpictureBox
関数とがあります。drawGrid
内部の各セルをクリックするために、セルが選択されているかどうかを知るためのif決定ロジックがあるpictureBox
プロパティを実装しました。pictureBox1_MouseClick
私が直面している問題は、正方形をすばやくクリックするとエラーが発生します。System.IndexOutOfRangeException
これはを指しfill_in[x, y] = !fill_in[x, y];
ます。
pictureBox1_MouseClick
イベントのクリック精度を上げて、エラーが発生しないようにするにはどうすればよいですか?
特定のエラー:
`タイプ'System.IndexOutOfRangeException'の未処理の例外がlife.exeで発生しました
追加情報:インデックスが配列の範囲外でした。`
コード
namespace life
{
public partial class Form1 : Form
{
Graphics paper;
bool[,] fill_in = new bool[450, 450];
int cellSize = 10;
private void drawGrid()
{
int numOfCells = 100;
Pen p = new Pen(Color.Blue);
paper.Clear(Color.White);
for (int i = 0; i < numOfCells; i++)
{
// Vertical Lines
paper.DrawLine(p, i * cellSize, 0, i * cellSize, numOfCells * cellSize);
// Horizontal Lines
paper.DrawLine(p, 0, i * cellSize, numOfCells * cellSize, i * cellSize);
}
}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int x = cellSize * (e.X / cellSize);
int y = cellSize * (e.Y / cellSize);
// Reverse the value of fill_in[i, j] - if it was false, change to true,
// and if true change to false
fill_in[x, y] = !fill_in[x, y];
if (fill_in[x, y])
{
// Fill grid square with the filled color
paper.FillRectangle(Brushes.Red, x, y, 10, 10);
}
else
{
// Fill grid square with unfilled color
paper.FillRectangle(Brushes.White, x, y, 10, 10);
}
}
}
}