gpt4 book ai didi

c# - 在 WindowsFormsHost 里面用鼠标移动 WPF Window

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:13 34 4
gpt4 key购买 nike

我在网格中有一个主窗口,在该网格中有几个 wpf 用户控件。我还有三种方法可以通过鼠标控制网格内的移动。MouseDownMouseMoveMouseUp 并且它工作正常。

当我在其中一个 UserControl 中添加 WindowsFormsHost 时,它就不再工作了。我可以移动窗口,但 WindowsFormsHost 留在同一个地方。

我想知道当我有 WindowsFormsHost 时,如何使用鼠标事件在网格内移动窗口。

提前致谢。

问候,菲利普。

附言。这些是我用来在网格内移动 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;
}
}

最佳答案

也许尝试将 translateTransform 直接应用于 WindowsFormHost,或者看看如果在 mousemove 之后使用 WindowsFormHost.InvalidateVisual() 会发生什么

关于c# - 在 WindowsFormsHost 里面用鼠标移动 WPF Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099917/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com