数か月間使用しているwinformsのフチなしフォームをドラッグできるコードがあります。これは非常にうまく機能します。
しかし、私が最初にコードを受け取ったとき、それらはフォームthis.Invalidate();
のイベントで使用され、MouseMove
フォームは少しちらつき、ドラッグすると遅くなりました。そこで、イベントで交換Invalidate()
しUpdate()
ましたMouseMove
が、驚いたことに、フォームを非常にスムーズにドラッグできるようになり、ちらつきがまったくなくなりました。
誰かが、Invalidateが使用するのに適切であるように聞こえる場合でも、UpdateによってコードがInvalidateよりもうまく機能する理由を説明できますか?
ありがとう :)
PSコードを追加するともっと役立つかもしれません...今すぐ追加してください。
編集-コードは次のとおりです。
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;
}