我有一个为我的 WPF 画布创建的 UserControl(CardGUI),并且我在 UserControl 上实现了 MouseEvents,如下所示。事情是当我将 UserControl 从工具箱拖到画布上时,它工作得很好,但是当我尝试添加新控件时,CardGUI card = new CardGUI(); 在我的 MainForm 中,我无法再移动控件,而且我不知道这是为什么。
我尝试调试,但是当我单击新添加的控件时,事件仍然会被触发,但我无法移动它。
public void UserControl_MouseLeftButtonDown(object sender,
MouseButtonEventArgs e)
{
if (!inDrag)
{
anchorPoint = e.GetPosition(null);
CaptureMouse();
inDrag = true;
e.Handled = true;
}
}
public void UserControl_MouseMove(object sender, MouseEventArgs e)
{
if (inDrag)
{
currentPoint = e.GetPosition(null);
Canvas.SetLeft(this,
Canvas.GetLeft(this) +
(currentPoint.X - anchorPoint.X));
Canvas.SetTop(this,
Canvas.GetTop(this) +
(currentPoint.Y - anchorPoint.Y));
anchorPoint = currentPoint;
e.Handled = true;
}
}
public void UserControl_MouseLeftButtonUp(object sender,
MouseButtonEventArgs e)
{
if (inDrag)
{
ReleaseMouseCapture();
inDrag = false;
e.Handled = true;
}
}
我将控件添加到我的主窗体中,例如:
this.deckCard = new CardGUI();
this.deckCard.Margin = new Thickness(xDeckCoord, yDeckCoord, 0, 0);
this.main.Children.Add(this.deckCard);
this.deckCard.IsHitTestVisible = true;
this.deckCard.AllowDrop = true;
我认为可能是因为添加控件的方法只被调用一次,即使触发了事件,位置也不会真正更新。如果我从工具箱中拖动控件,我就没有这个问题。