Недействительность против обновленияC#

Место общения программистов C#
Ответить
Anonymous
 Недействительность против обновления

Сообщение Anonymous »

У меня есть код, позволяющий перетаскивать форму без полей в winforms, который я использую уже несколько месяцев, и он работает очень хорошо.
Но когда я сначала был предоставлен код, они использовали 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»