Silverlight中按钮实现简单的拖放功能注意点
2010-01-04 23:01
369 查看
<Canvas Background="#46461F">
<Button
MouseLeftButtonDown="OnMouseDown"
MouseMove="OnMouseMove"
MouseLeftButtonUp="OnMouseUp"
Canvas.Left="50" Canvas.Top="50" Background="Red"
FontSize="18"
ClickMode="Hover"
Width="160" Height="80">
<Button.Content>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock Text="拖动我" VerticalAlignment="Center" Margin="10"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
</Canvas>
红色为注意点,否则按钮触发不了MouseLeftButtonDown与MouseLeftButtonUp
以下为事件
bool trackingMouseMove = false;
Point mousePosition;
void OnMouseDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
mousePosition = e.GetPosition(null);
trackingMouseMove = true;
if (null != element)
{
element.CaptureMouse();
element.Cursor = Cursors.Hand;
}
}
void OnMouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (trackingMouseMove)
{
double deltaV = e.GetPosition(null).Y - mousePosition.Y;
double deltaH = e.GetPosition(null).X - mousePosition.X;
double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);
element.SetValue(Canvas.TopProperty, newTop);
element.SetValue(Canvas.LeftProperty, newLeft);
mousePosition = e.GetPosition(null);
}
}
void OnMouseUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
trackingMouseMove = false;
element.ReleaseMouseCapture();
mousePosition.X = mousePosition.Y = 0;
element.Cursor = null;
}
<Button
MouseLeftButtonDown="OnMouseDown"
MouseMove="OnMouseMove"
MouseLeftButtonUp="OnMouseUp"
Canvas.Left="50" Canvas.Top="50" Background="Red"
FontSize="18"
ClickMode="Hover"
Width="160" Height="80">
<Button.Content>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock Text="拖动我" VerticalAlignment="Center" Margin="10"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
</Canvas>
红色为注意点,否则按钮触发不了MouseLeftButtonDown与MouseLeftButtonUp
以下为事件
bool trackingMouseMove = false;
Point mousePosition;
void OnMouseDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
mousePosition = e.GetPosition(null);
trackingMouseMove = true;
if (null != element)
{
element.CaptureMouse();
element.Cursor = Cursors.Hand;
}
}
void OnMouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (trackingMouseMove)
{
double deltaV = e.GetPosition(null).Y - mousePosition.Y;
double deltaH = e.GetPosition(null).X - mousePosition.X;
double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);
element.SetValue(Canvas.TopProperty, newTop);
element.SetValue(Canvas.LeftProperty, newLeft);
mousePosition = e.GetPosition(null);
}
}
void OnMouseUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
trackingMouseMove = false;
element.ReleaseMouseCapture();
mousePosition.X = mousePosition.Y = 0;
element.Cursor = null;
}
相关文章推荐
- (5):Silverlight 2 实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- (5):Silverlight 2 实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能 (转)
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- 一步一步学Silverlight 2系列(5):实现简单的拖放功能
- [原创]Adobe Edge Animate1.0 --创建按钮及简单功能实现
- HTML5实现简单的拖放功能
- 今天找到一个简单好用的全选按钮功能实现
- 在窗体上放置saveFileDialog、openFileDialog两个控件。实现功能:1)程序运行时,在文本框(注意文本框多行、带垂直滚动条)中输入汉字、字符等,单击保存按钮,即可将文本框中内容保
- iOS开发>学无止境 - 新浪微博iOS底部功能按钮简单实现
- 使用NSTimer计时器实现简单的按钮倒计时功能
- Silverlight使用socket tcp简单实现聊天室功能
- Js简单实现返回顶部按钮功能
- jquery.onoff实现简单的开关按钮功能(推荐)