【问题标题】:WinForm Update during dragging using ReleaseCapture使用 ReleaseCapture 拖动期间的 WinForm 更新
【发布时间】:2016-10-04 20:43:54
【问题描述】:

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

但是,在拖动操作期间,我无法拨打电话。 我想可以生成一个线程,直到SendMessage 返回一个值,但是我想问一下这个特定问题是否有本机方法?

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

最好的问候

【问题讨论】:

  • 你做错了。我们看不到你做错了。甚至无法说出“无法接听电话”可能意味着什么。
  • @HansPassant 请查看编辑后的帖子
  • @HansPassant "not able to do my calls" 表示我想在拖动操作过程中进行其他方法调用。

标签: c# winforms


【解决方案1】:

您可以使用在开始、期间和结束时引发的形式事件:

  • 使用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();
}

【讨论】:

    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多