グリッド内に mainWindow があり、このグリッド内に wpf UserControls がいくつかあります。マウスでグリッド内の動きを制御するメソッドも 3 つあります。
MouseDown
、MouseMove
そしてMouseUp
それは正しく動作します。
WindowsFormsHost
これらの UserControl の内部に追加すると、機能しなくなります。ウィンドウを移動できWindowsFormsHost
ますが、同じ場所にとどまります。
内部がある場合に、マウス イベントを使用してグリッド内でウィンドウを移動する方法を知りたいWindowsFormsHost
です。
前もって感謝します。
よろしく、フェリペ。
PS。これらは、グリッド内で UserControl を移動するために使用するメソッドです。
public void Control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isDragging = true;
var draggableControl = sender as UserControl;
clickPosition = e.GetPosition(this);
draggableControl.CaptureMouse();
}
public void Control_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
isDragging = false;
var draggable = sender as UserControl;
draggable.ReleaseMouseCapture();
}
public void Control_MouseMove(object sender, MouseEventArgs e)
{
var draggableControl = sender as UserControl;
if (isDragging && draggableControl != null)
{
Point currentPosition = e.GetPosition(this.Parent as UIElement);
var transform = draggableControl.RenderTransform as TranslateTransform;
if (transform == null)
{
transform = new TranslateTransform();
draggableControl.RenderTransform = transform;
}
transform.X = currentPosition.X - clickPosition.X;
transform.Y = currentPosition.Y - clickPosition.Y;
}
}