РЕДАКТИРОВАТЬ: я пытался решить эту проблему в течение недели, и я искал здесь и в других местах.
Я хотел бы начать с объяснения, что я программист хобби, и у меня нет никого, чтобыпопросить помощи.Я могу только читать книги, которые я покупаю, и руководства в Интернете, поэтому я прошу прощения, если вопрос выходит за рамки глупости.
Случай: у меня есть «Приложение Windows Form», сама форма имеет размер 500x500 ив нем у меня есть «Picture Box» (размер 400x400, loc 0,0).
Я знаю, что Thread.Sleep зависает интерфейс, потому что он не многопоточный.
ПроблемаЯ страдаю, что «OnPaint» вызывается при запуске программы.Если я добавляю кнопку (перетащенную из панели инструментов), то OnPaint вызывается ДВА раза и т. Д., Подтверждается до 4 кнопок.Это не худшая часть однако.Просто наведение мыши на кнопку (любую кнопку) вызывает «OnPaint».Как видите, «Invalidate ()» еще не вставлен, потому что я пока не могу даже нажимать кнопки.
Как мне предотвратить это?В чем проблема?Что я должен был сделать по-другому?Я имею в виду, что он делает то, что я хочу, просто не тогда, когда я хочу.
Код:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
int radie = 25;
Random random = new Random();
Graphics graphics = pictureBox1.CreateGraphics();
Color color = Color.Black;
SolidBrush brush = new SolidBrush(color);
for (int i = 2500; i > 0; i--)
{
color = Color.FromArgb(random.Next(0, 101), random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
brush.Color = color;
graphics.FillEllipse(brush, random.Next(0, 400 - radie * 2), random.Next(0, 400 - radie * 2), radie * 2, radie * 2);
Thread.Sleep(1);
}
}
}
Для тех, кто интересуется, что он делает, он просто заполняет поле с кружкамиразных цветов и непрозрачности.редактировать: он не заполнен мгновенно, он должен выглядеть "красиво".
Заранее спасибо!