Но когда я сначала был предоставлен код, они использовали this.Invalidate(); в событии MouseMove формы, и форма немного мерцала и работала медленно при перетаскивании. Итак, я заменил Invalidate() на Update() в событии MouseMove, и, к моему удивлению, форму теперь можно перетаскивать очень плавно и без какого-либо мерцания.
Может ли кто-нибудь объяснить мне, почему обновление заставляет код работать лучше, чем Invalidate, даже если Invalidate звучит так, будто его лучше использовать?
Спасибо
P.S. Возможно, было бы лучше, если бы я добавил код... Добавляю его сейчас.
Изменить – вот код:< /p>
private void titlebar_MouseDown(object sender, MouseEventArgs e)
{
this.IsMouseDown = true;
this.LastCursorPosition = new Point(e.X, e.Y);
if (this.BackColor == Color.White)
{
this.BackColor = Color.GhostWhite;
tbox.BackColor = Color.GhostWhite;
tbox.ForeColor = Color.Black;
}
else
{
this.BackColor = Color.FromArgb(20, 20, 20);
tbox.BackColor = Color.FromArgb(20, 20, 20);
tbox.ForeColor = Color.White;
}
}
private void titlebar_MouseMove(object sender, MouseEventArgs e)
{
if (this.IsMouseDown == true)
{
//Move the form
this.Location = new Point(this.Left - (this.LastCursorPosition.X - e.X), this.Top - (this.LastCursorPosition.Y - e.Y));
// Update works better than Invalidate();.
Update();
}
}
private void titlebar_MouseUp(object sender, MouseEventArgs e)
{
this.IsMouseDown = false;
this.BackColor = fc;
tbox.BackColor = fc;
}
Подробнее здесь: https://stackoverflow.com/questions/228 ... -vs-update
Мобильная версия