我在网格中有一个mainWindow,在这个网格中有几个wpf UserControl。
我还有三种通过鼠标控制网格内部运动的方法。
MouseDown
,MouseMove
和MouseUp
,它运作正常。
当我在其中一个UserControl中添加WindowsFormsHost
时,它就不再起作用了。我可以移动窗口,但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;
}
}
答案 0 :(得分:1)
也许尝试将translateTransform直接应用于WindowsFormHost,或者看看如果在mousemove之后使用WindowsFormHost.InvalidateVisual()会发生什么