c#wpf mousedown和mouseup

时间:2018-01-05 14:27:31

标签: c# wpf mouseevent

我试图创建一个连接两个对象的程序。当第一个对象上的MouseDown时,我记得它(没有释放鼠标按钮),当我在第二个对象上MouseUp时,我想在它们之间建立连接,但是当MouseUp时在第二个对象上,此事件在第一个对象上触发。

private void myThumb1_MouseDown(object sender, MouseButtonEventArgs e)
{
    inherObj1 = mt;
    connector = new Line
    {
        X1 = e.GetPosition(myCanvas).X,
        Y1 = e.GetPosition(myCanvas).Y,
        X2 = e.GetPosition(myCanvas).X,
        Y2 = e.GetPosition(myCanvas).Y,
        Stroke=Brushes.Black
    };
    myCanvas.Children.Add(connector);
}

private void myThumb1_MouseUp(object sender, MouseButtonEventArgs e)
{
    MyThumb mt = sender as MyThumb;
    if(isInher)
    {
        inherObj2 = mt;
        CreateInher(inherObj1, inherObj2);
    }
    e.Handled = true;
}

据我了解,MouseUp附加到MouseDown工作的对象。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

也许你可以利用路由事件?如果两个控件都在同一个父控件中,则可以处理父控件中子控件的事件,如下所示:

的Xaml:

<Border Height="50" Width="300" BorderBrush="Gray" BorderThickness="1">
  <StackPanel Background="LightGray" Orientation="Horizontal" Button.Click="CommonClickHandler">
    <Button Name="YesButton" Width="Auto" >Yes</Button>
    <Button Name="NoButton" Width="Auto" >No</Button>
    <Button Name="CancelButton" Width="Auto" >Cancel</Button>
  </StackPanel>
</Border>

这只处理Button.Click事件,但对于MouseDown / MouseUp应该是可能的。