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;
}
}
<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;
}
}
相关文章推荐
- 『WPF』实现拖动文件到窗体(控件)
- 在WPF中的Canvas上实现控件的拖动、缩放
- WPF实现控件拖动的示例代码
- WPF中拖动控件,实现位置随意摆放[1]
- WPF中拖动控件,实现位置随意摆放
- WPF实现控件拖动
- WPF实现slide控件拖动完成后改变变量值
- 在WPF中的Canvas上实现控件的拖动、缩放
- 自定义Imageview控件实现多种手势操作 (拖动、水平缩放、竖直缩放、等比例缩放、双击、长按)
- 在WPF中的Canvas上实现控件的拖动、缩放
- 在WPF中如何实现列表控件的拖拽操作
- C++ Builder 实现控件的拖动-停靠操作
- WPF中拖动控件,实现位置随意摆放[2]
- jquery实现页面控件拖动效果js代码
- WPF利用委托与事件实现VM对View中控件的调用
- Repeater控件实现编辑、更新、删除操作
- 关于拖动(实现窗体拖动、不允许窗体拖动、任意控件运行时拖动)
- C# panel控件实现鼠标滚轮滚动拖动滚动条
- WPF跨线程操作GUI控件
- 使用HorizontalScrollView实现水平控件拖动效果