用户控件在使用新语句时不能使用MouseEvent移动?

我有一个UserControl(CardGUI),我为我的WPF画布创建,我实现了像下面的UserControl MouseEvents。当我将UserControl从工具箱拖到画布上时,它工作得很好,但是当我尝试添加新控件时,CardGUI卡= new CardGUI();在我的MainForm中,我无法再移动控件,我无法弄清楚为什么会这样。用户控件在使用新语句时不能使用MouseEvent移动?

我试过调试,但是当我点击新添加的控件时仍然会触发事件,但我无法移动它。

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;

}

}

我的控件添加到我的MainForm,如:

 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;

我想,这可能是因为该方法添加控件只被调用一次,位置并没有真正更新eventhough该事件被触发。如果我从ToolBox中拖动控件,我没有这个问题。

回答:

将其添加到一个Canvas,但不设置任何位置或大小

尝试增加:

this.main.SetLeft(deckCard, 0); 

this.main.SetTop(deckCard, 0);

或者使用一个网格,而不是如果你想要的东西自动伸展到可用大小(您使用Margin似乎推断)

以上是 用户控件在使用新语句时不能使用MouseEvent移动? 的全部内容, 来源链接: utcz.com/qa/266247.html

回到顶部