gpt4 book ai didi

wpf - 移动 wpf 中的任何控件

转载 作者:行者123 更新时间:2023-12-02 06:21:08 25 4
gpt4 key购买 nike

我正在尝试使用 Canvas 在 wpf 中移动控制

这是XAML

    <Canvas Grid.Column="1" Grid.Row="0" x:Name="DropCanvas"   AllowDrop="True"  DragOver="DropCanvas_DragOver" 
Drop="Canvas_Drop" DragEnter="Canvas_DragEnter" Background="#12000000" >
<TextBox Canvas.Left="162" Canvas.Top="188" Height="23" Name="textBox1" Width="120"
PreviewMouseMove="textBox1_PreviewMouseMove"
PreviewMouseLeftButtonDown="textBox1_PreviewMouseLeftButtonDown"
PreviewMouseUp="textBox1_PreviewMouseUp" />
</Canvas>

这是代码

    Point p = new Point();
private void textBox1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Control control = sender as Control;

control.CaptureMouse();
p = e.GetPosition(control);
}

private void textBox1_PreviewMouseMove(object sender, MouseEventArgs e)
{
Control control = sender as Control;
Point x = e.GetPosition(control);
if (e.LeftButton == MouseButtonState.Pressed)
{
Canvas.SetLeft(control, Canvas.GetLeft(control) + (x.X - p.X));
Canvas.SetTop(control, Canvas.GetTop(control) + (x.Y - p.Y));
}
p = x;
}

private void textBox1_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
Control control = sender as Control;
control.ReleaseMouseCapture();

activated = false;
}

代码可以工作,但是当它移动时,控件会晃动。
问题是什么

最佳答案

当您调用GetPosition时,您应该使用DropCanvas作为参数而不是控件。您看到振动是因为文本框不断移动,您需要修复一些东西。

或者,您可以使用 Expression Blend SDK 中提供的 MouseDragElementBehavior 来移动容器中的对象。

此外,这个项目对您可能有用:http://www.codeproject.com/Articles/24681/WPF-Diagram-Designer-Part-4

关于wpf - 移动 wpf 中的任何控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com