我试图在WPF中实现拖放。我现在拥有的代码允许我单击按钮的左上角并将其向下或向右拖动。
由于某些原因,它将不允许我拖到左边或向上,我看不出原因。
守则如下:
private void ctlTextbox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//In this event, we get current mouse position on the control to use it in the MouseMove event.
FirstXPos = e.GetPosition(sender as Control).X;
FirstYPos = e.GetPosition(sender as Control).Y;
FirstArrowXPos = e.GetPosition((sender as Control).Parent as Control).X - FirstXPos;
FirstArrowYPos = e.GetPosition((sender as Control).Parent as Control).Y - FirstYPos;
}
private void ctlTextbox_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
(sender as FrameworkElement).SetValue(Canvas.LeftProperty,
e.GetPosition((sender as FrameworkElement).Parent as FrameworkElement).X - FirstXPos);
(sender as FrameworkElement).SetValue(Canvas.TopProperty,
e.GetPosition((sender as FrameworkElement).Parent as FrameworkElement).Y - FirstYPos);
}
}
XAML:
<Canvas x:Name="MainGrid" RenderTransformOrigin = "0.499,0.425" AllowDrop="True" >
<Button x:Name="button" Content="112" Style="{StaticResource RoomButton}" MouseLeftButtonDown="ctlTextbox_MouseLeftButtonDown" MouseMove="ctlTextbox_MouseMove" Height="32" Canvas.Left="69" Canvas.Top="67" Width="65" Margin="0" />
</Canvas>
发布于 2016-02-29 12:24:54
试一试以下方法:
_movingObject
中添加一个名为Window
的私有字段:
FrameworkElement _movingObject;问题是,当您将鼠标向上移动或离开时,您将鼠标移到试图拖动的控件的边界之外,因此它的MouseMove
事件不会被调用。
https://stackoverflow.com/questions/35707013
复制相似问题