public partial class Form1 : Form
{
private List<Image> listImages;
public Form1()
{
listImages = new List<Image>();
// Изображения 10x10 пикселей
for (int i = 1; i <= 100; i++)
listImages.Add(Image.FromFile(Environment.CurrentDirectory + @$"\images\cell{i}.png"));
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
List<PictureBox> listCells = new List<PictureBox>();
for (int i = 1; i <= 100; i++)
{
PictureBox pbField = new PictureBox();
pbField.Name = $"pbField{i}";
pbField.Visible = false;
pbField.SizeMode = PictureBoxSizeMode.Normal;
pbField.Image = listImages[i-1];
pbField.Width = pbField.Image.Width;
pbField.Height = pbField.Image.Height;
pbField.BackColor = Color.Transparent;
pbField.Cursor = Cursors.Hand;
pbField.Location = ...; // тут сложная игровая логика позиционирования
pbField.Parent = this;
listCells.Add(pbField);
}
// Вариант показа №1 (не одновременный)
for (int i = 0; i < 100; i++)
listCells[i].Visible = true;
// Вариант №2 (показывается часть и зависает)
Parallel.For(0, 100, i =>
{
listCells[i].Visible = true;
});
// Вариант №3 (показывается часть и зависает)
for (int i = 0; i < 100; i++)
{
var task = Task.Factory.StartNew(() =>
{
listCells[i].Visible = true;
});
}
// Вариант №4 (не одновременный)
for (int i = 0; i < 100; i++)
await ShowCell(i);
}
private async Task ShowCell(int i)
{
listCells[i].Visible = true;
}