以下は、画面上で WPF フォームをドラッグする簡単なコードです。このコードの一部を別の投稿で見たことがあるかもしれませんが、WPF フォームをドラッグする必要に合わせて変更しただけです。
MouseLeftButtonDown でフォームの位置を取得する必要があることに注意してください。これにより、画面上でマウス ポインターをドラッグするときに、フォーム上の同じ場所にマウス ポインターを配置したままにすることができます。
また、画面に対するマウスの位置を取得するには、次の参照を追加する必要があります: System.Windows.Forms
必要なプロパティ:
private bool _IsDragInProgress { get; set; }
private System.Windows.Point _FormMousePosition {get;set;}
コード:
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
this._IsDragInProgress = true;
this.CaptureMouse();
this._FormMousePosition = e.GetPosition((UIElement)this);
base.OnMouseLeftButtonDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (!this._IsDragInProgress)
return;
System.Drawing.Point screenPos = (System.Drawing.Point)System.Windows.Forms.Cursor.Position;
double top = (double)screenPos.Y - (double)this._FormMousePosition.Y;
double left = (double)screenPos.X - (double)this._FormMousePosition.X;
this.SetValue(MainWindow.TopProperty, top);
this.SetValue(MainWindow.LeftProperty, left);
base.OnMouseMove(e);
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
this._IsDragInProgress = false;
this.ReleaseMouseCapture();
base.OnMouseLeftButtonUp(e);
}