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;
コントロールを追加するメソッドは1回しか呼び出されないため、イベントがトリガーされても場所は実際には更新されない可能性があります。ツールボックスからコントロールをドラッグした場合、その問題は発生しませんでした。