使用ReleaseCapture拖动期间的WinForm更新

时间:2016-07-19 15:38:23

标签: c# winforms

当我用鼠标拖动表单时,我想根据表单的位置更新一些图形渲染。 由于表单是无边框的,因此我使用ReleaseCaptureSendMessage来移动它。

但是,在拖动操作期间,我无法进行调用。 我想可以生成一个运行直到SendMessage返回一个值的线程,但是我想询问是否存在针对这个特定问题的本机方法?

public void MoveWindow()
{
    ReleaseCapture();
    SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    ....
}

祝你好运

1 个答案:

答案 0 :(得分:0)

您可以使用在开始,期间和结束时提升的形式的事件:

  • 在表单移动过程中使用Move表单事件做一些事情。

  • 使用表单的ResizeBegin事件在开始移动时完成工作。

  • 使用表单的ResizeEnd事件在移动结束时完成工作。

示例

private void Form1_Move(object sender, EventArgs e)
{
    this.BackColor = this.Left/10 % 2 == 0 ? Color.Red : Color.Blue;
}
private void Form1_ResizeBegin(object sender, EventArgs e)
{
    this.Text = this.Location.ToString(); 
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
    this.Text = this.Location.ToString();
}