资料,教程,编程,文集
ll).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); } }
完成拖放操作
完成拖放操作,实现 MouseLeftButtonUp 事件处理程序.
void OnMouseUp(object sender, MouseButtonEventArgs e) { FrameworkElement element = sender as FrameworkElement; trackingMouseMove = false; element.ReleaseMouseCapture();
mousePosition.X = mousePosition.Y = 0; element.Cursor = null;
}
效果显示
最终,完成后的效果如下
拖动按钮
结束语
本文实现了一个简单的拖放功能(示例来自于 Silverlight 2 SDK),点击下载文本示例代码.
一步一步学 Silverlight 2 系列(6):键盘事件处理
概述
Silverlight 2 Beta 1 版本发布了,无论从 Runtime 还是 Tools 都给我们带来了很多的惊喜,如支持框 架语言 Visual Basic, Visual C#, IronRuby, Ironpython,对 JSON,Web Service,WCF 以及 S ockets 的支持等一系列新的特性.《一步一步学 Silverlight 2 系列》文章带您快速进入 Silverlight 2 开发. 本文为系列文章第六篇,介绍 Silverlight 中的键盘处理事件,在 Silverlight 2 中,支持 KeyDown 和 K eyUp 两个事件.
声明事件
所有的事件声明过程都是一样的,在 XAML 中或者是在代码中进行注册.
<Canvas x:Name="LayoutRoot" Background="#46461F"> <Ellipse x:Name="ellipse" Width="120" Height="120" Fill="Orange" Canvas.Top="50" Canvas.Left="160" Stroke="White" StrokeThickness="2" KeyUp="ellipse_KeyUp" KeyDown="ellipse_KeyDown"/> </Canvas>
或者在代码中注册:
public partial class Page : UserControl { public Page() { InitializeComponent(); this.ellipse.KeyUp += new KeyEventHandler(ellipse_KeyUp); this.ellipse.KeyDown += new KeyEventHandler(ellipse_KeyDown);
}
private void ellipse_KeyUp(object sender, KeyEventArgs e) {
}
private void ellipse_KeyDown(object sender, KeyEventArgs e) {
} }
使用事件参数 KeyEventArgs
使用事件参数可以获取到事件数据,可以使用的属性有 Key,PlatformKeyCode,Handled,Source.
private void ellipse_KeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.R) { //…… } else if(e.Key == Key.Ctrl && e.Key == Key.U) { //…… } }
在事件数据中,Handled 有时候非常有用,可以用来判断事件是否已经处理.
键盘路由事件
键盘事件 KeyDown 和 KeyUp 都支持路由事件,如下面的示例.
<Canvas x:Name="LayoutRoot" Background="#46461F" KeyUp="LayoutRoot_KeyUp"> <TextBox x:Name="textbox" Width="200" Height="40" Canvas.Top="80" Canvas.Left="80"/> <TextBlock x:Name="Status" Foreground=
"White" Text="Status"
Canvas.Left="80" Canvas.Top="200"/> </Canvas>
为 Canvas 注册了一个 KeyUp 事件,编

