Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用新语句时,UserControl不随MouseeEvent移动?_C#_Wpf_User Controls - Fatal编程技术网

C# 使用新语句时,UserControl不随MouseeEvent移动?

C# 使用新语句时,UserControl不随MouseeEvent移动?,c#,wpf,user-controls,C#,Wpf,User Controls,我有一个为我的WPF画布创建的UserControl(CardGUI),我在UserControl上实现了MouseEvents,如下所示。问题是,当我将UserControl从工具箱拖到画布上时,它可以正常工作,但当我尝试添加一个新控件时,CardGUI card=new CardGUI();在我的主窗体中,我无法再移动控件,我也不明白为什么会这样 我尝试过调试,但当我单击新添加的控件时,仍然会触发事件,但我无法移动它 public void UserControl_MouseLeftButt

我有一个为我的WPF画布创建的UserControl(CardGUI),我在UserControl上实现了MouseEvents,如下所示。问题是,当我将UserControl从工具箱拖到画布上时,它可以正常工作,但当我尝试添加一个新控件时,CardGUI card=new CardGUI();在我的主窗体中,我无法再移动控件,我也不明白为什么会这样

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

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;

我想可能是因为添加控件的方法只调用一次,所以即使触发了事件,位置也不会真正更新事件。如果从工具箱中拖动控件,则不会出现此问题。

您正在将其添加到画布,但未设置任何位置或大小

尝试添加:

this.main.SetLeft(deckCard, 0);
this.main.SetTop(deckCard, 0);
或者,如果你想让东西自动拉伸到可用的大小,可以使用网格(你使用边距似乎可以推断)