Несколько улучшенный ответ предыдущего оратора. Только поведение на краях надо проверить:
var r = new Random();
var left = 50;
var top = 50;
var width = 450;
var height = 450;
var squareSize = 5;
using (var gr = this.CreateGraphics())
{
foreach(var x=left; x < width - squareSize; x+=squareSize)
foreach(var y=top; y < height - squareSize; y+=squareSize)
{
using (var randomBrush = new SolidBrush(Color.FromArgb(r.Next(255),r.Next(255),r.Next(255),r.Next(255))))
{
gr.FillRectangle(randomBrush , x, y, x+squareSize, y+squareSize);
}
}
}