もちろん、MikeBの受け入れられた答えは正しいですが、OPはまだ混乱していて、人々はまだこれを見ているので、明確な答えを追加します(はい、8年後)。
マイクの方法
private void pictureBox1_Paint(object sender, PaintEventArgs e)
は、適切なタイミングで呼び出す必要があるスタンドアロンメソッドです。これを実現するには、OnPaintイベントディスパッチャーに登録する必要があります。これにより、OnPaintイベントが発生するたびに呼び出されます。これを行うには、クラスのコンストラクターなどの便利な場所に次の行を配置します。
OnPaint += pictureBox1_Paint;
このアプローチは問題ありませんが、描画パフォーマンスが本当に必要な場所に到達すると、PaintEventArgsを作成して渡すために余分なコストがかかるため、問題が発生します。より良いアプローチは、親クラスのOnPaintメソッドをオーバーライドし、描画コードをOnPaintメソッドに直接配置することです。そうすれば、イベントハンドラーを接続する必要がなく、実行速度が速くなります。コードはほとんど同じに見えます:
protected override void OnPaint (PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
int numOfCells = 200;
int cellSize = 5;
Pen p = new Pen(Color.Black);
for (int y = 0; y < numOfCells; ++y)
{
g.DrawLine(p, 0, y * cellSize, numOfCells * cellSize, y * cellSize);
}
for (int x = 0; x < numOfCells; ++x)
{
g.DrawLine(p, x * cellSize, 0, x * cellSize, numOfCells * cellSize);
}
}
最後の提案:PictureBoxコントロールで描画を行うことはほとんどありません。多くの人がそれをしますが、多くの専門家はそのようにそれをしません。これらは描画キャンバスとして設計されたものではなく、すべてのフォームベースのコントロールと同じ機能を継承しているだけです。複雑さが増し、便利な機能をまったく追加せずに速度が低下します。ピクチャーボックスを取り除き、ピクチャーボックスを保持していたフォームまたはパネルに直接描画すると、より幸せになります。