您的位置:首页 > 其它

WPF下实现控件的拖动操作

2008-03-07 19:59 471 查看
XAML:

<Window x:Class="WPFWin.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="381" Width="662" MouseMove="Window_MouseMove" MouseUp="Window_MouseUp">
<Canvas Height="297" Name="canvas1" Width="491">
<Label Canvas.Left="127" Canvas.Top="141" Height="28" Name="label1" Width="120" MouseDown="label1_MouseDown" >拖动这个控件</Label>
</Canvas>
</Window>
C#:
bool IsMouseDown = false;
Point mousePoint;
object mouseCtrl = null;

private void label1_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
IsMouseDown = true;
mousePoint = e.GetPosition(this.canvas1);
mouseCtrl = sender;
}
}

private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point theMousePoint = e.GetPosition(this.canvas1 );
Canvas.SetLeft((UIElement)mouseCtrl, theMousePoint.X - (mousePoint.X - Canvas.GetLeft(((UIElement)mouseCtrl))));
Canvas.SetTop((UIElement)mouseCtrl, theMousePoint.Y - (mousePoint.Y - Canvas.GetTop(((UIElement)mouseCtrl))));

mousePoint = theMousePoint;
}
}
}

private void Window_MouseUp(object sender, MouseButtonEventArgs e)
{
if (IsMouseDown)
{
IsMouseDown = false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: