当我用鼠标拖动表单时,我想根据表单的位置更新一些图形渲染。
由于表单是无边框的,因此我使用ReleaseCapture
和SendMessage
来移动它。
但是,在拖动操作期间,我无法进行调用。
我想可以生成一个运行直到SendMessage
返回一个值的线程,但是我想询问是否存在针对这个特定问题的本机方法?
public void MoveWindow()
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
....
}
祝你好运
答案 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();
}