silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

[索引页] [源码下载] 稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件 作者: webabcd 介绍 Silverlight 2.0 人机交互:响应用户的鼠标操作和键盘操作     MouseEnter - 鼠标进入时触发的事件(显然,此事件不能冒泡)     MouSELEave - 鼠标离开时触发的事件(显然,此事件不能冒泡)     MouSELEftButto
[索引页]
[源码下载]


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


作者: webabcd


介绍
Silverlight 2.0 人机交互:响应用户的鼠标操作和键盘操作
    MouseEnter - 鼠标进入时触发的事件(显然,此事件不能冒泡)
    MouSELEave - 鼠标离开时触发的事件(显然,此事件不能冒泡)
    MouSELEftButtonDown - 鼠标左键单击按下时触发的事件
    MouSELEftButtonUp - 鼠标左键单击按下并放开时触发的事件
    MouseMove - 鼠标移动时触发的事件
    MouseEventArgs.GetPosition() - 鼠标相对于指定元素的坐标
    MouseButtonEventArgs.Handled - 此事件是否已被处理
    KeyDown - 鼠标按下时触发的事件
    KeyUp - 鼠标按下并放开时触发的事件
    KeyEventArgs.Key - 与事件相关的键盘的按键 [System.Windows.Input.Key枚举]
    KeyEventArgs.Handled - 是否处理过此事件
    System.Windows.Input.Keyboard.Modifiers - 当前按下的辅助键 [System.Windows.Input.ModifierKeys枚举]


在线DEMO
@L_262_10@  


示例
1、Mouse.xaml
<UserControl x:Class="Silverlight20.Interactive.Mouse"
        xmlns="http://scheR_170_11845@as.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://scheR_170_11845@as.microsoft.com/winfx/2006/xaml">
        
        <!--路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件-->
        
        <!--
        MouSELEftButtonDown,MouSELEftButtonUp和MouseMove均为向上冒泡的路由事件
        本例的事件路由为:Ellipse -> StackPanel -> UserControl 或 Rectangle -> Canvas -> StackPanel -> UserControl
        如果不想向上冒泡,则可以使用 MouseButtonEventArgs.Handled = true 告知事件已被处理
        -->
        <StackPanel HorizontalAlignment="Left" MouSELEftButtonDown="StackPanel_MouSELEftButtonDown" >

                <!--
                MouseEnter - 鼠标进入时触发的事件(显然,此事件不能冒泡)
                MouSELEave - 鼠标离开时触发的事件(显然,此事件不能冒泡)
                
                MouSELEftButtonDown - 鼠标左键单击按下时触发的事件
                MouSELEftButtonUp - 鼠标左键单击按下并放开时触发的事件
                MouseMove - 鼠标移动时触发的事件
                -->
                <Ellipse x:Name="ellipse" Width="200" Height="100" Fill="Red" Margin="5"    
                        MouseEnter="ellipse_MouseEnter"    
                        MouSELEave="ellipse_MouSELEave"
                        MouSELEftButtonDown="ellipse_MouSELEftButtonDown"
                        MouSELEftButtonUp="ellipse_MouSELEftButtonUp"
                >
                </Ellipse>

                <Canvas Margin="5">

                        <!--用于演示拖放的矩形-->
                        <Rectangle x:Name="rectangle" Fill="Blue" Width="50" Height="50"
                                MouSELEftButtonDown="rectangle_MouSELEftButtonDown"
                                MouSELEftButtonUp="rectangle_MouSELEftButtonUp"
                                MouseMove="rectangle_MouseMove"
                        />
                        
                </Canvas>

        </StackPanel>
</UserControl>
 
@H_443_104@mouse.xaml.cs

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Collections.Generic;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Linq;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Net;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Controls;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Documents;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Input;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Media;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Media.Animation;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Shapes;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

namespace Silverlight20.Interactive

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

{

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

         public partial class Mouse : UserControl

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 public Mouse()

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        initializeComponent();

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 void ellipse_MouseEnter( object sender,MouseEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        ellipse.Fill = new SolidColorBrush(Colors.Yellow);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 void ellipse_MouSELEave( object sender,MouseEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        ellipse.Fill = new SolidColorBrush(Colors.Red);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void ellipse_MouSELEftButtonUp( object sender,MouseButtonEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        ellipse.Fill = new SolidColorBrush(Colors.Yellow);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void ellipse_MouSELEftButtonDown( object sender,MouseButtonEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        ellipse.Fill = new SolidColorBrush(Colors.bluE);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // MouseButtonEventArgs.Handled - 此事件是否已被处理

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         //         false - 未被处理,事件的路由为向上冒泡

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         //         true - 已被处理,事件的路由为不再冒泡

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        e.Handled = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void StackPanel_MouSELEftButtonDown( object sender,MouseButtonEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 如果鼠标单击 rectangle 对象,则 会 执行到此句

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 如果鼠标单击 ellipse 对象,则 不会 执行到此句,因为之前 ellipse 对象的 MouSELEftButtonDown 事件中已经设置 e.Handled = true ,所以事件不会冒泡至此

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        ellipse.Fill = new SolidColorBrush(Colors.black);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 // 是否正在捕获鼠标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private bool _isMouseCaptured;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 // 鼠标垂直方向上的坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private double _mouseY;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 // 鼠标水平方向上的坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private double _mouseX;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void rectangle_MouSELEftButtonDown( object sender,MouseButtonEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // MouseButtonEventArgs.GetPosition() - 鼠标相对于指定元素的坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        _mouseY = e.GetPosition( null).Y;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        _mouseX = e.GetPosition( null).X;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // CaptureMouse() - 在指定的元素上捕获鼠标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        rectangle.CaptureMouse();

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        _isMouseCaptured = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 public void rectangle_MouseMove( object sender,MouseEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         if (_isMouseCaptured)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 移动前和移动后的鼠标 垂直方向 和 水平方向 的位置的差值

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 double v = e.GetPosition( null).Y - _mouseY;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 double h = e.GetPosition( null).X - _mouseX;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 移动后的 rectangle 对象相对于 Canvas 的坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 double newTop = v + ( double)rectangle.GetValue(Canvas.TopProperty);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 double newLeft = h + ( double)rectangle.GetValue(Canvas.LeftProperty);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 设置 rectangle 对象的位置为新的坐标.

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                rectangle.SETVALue(Canvas.TopProperty,newTop);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                rectangle.SETVALue(Canvas.LeftProperty,newLeft);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 更新鼠标的当前坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                _mouseY = e.GetPosition( null).Y;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                _mouseX = e.GetPosition( null).X;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void rectangle_MouSELEftButtonUp( object sender,MouseButtonEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // ReleaseMouseCapture() - 如果指定的元素具有鼠标捕获,则释放该捕获

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        rectangle.ReleaseMouseCapture();

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        _isMouseCaptured = false;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

}
 
 
2、Keyboard.xaml
<!--
KeyDown - 鼠标按下时触发的事件
KeyUp - 鼠标按下并放开时触发的事件
-->
<!--
KeyDown和KeyUp均为向上冒泡的路由事件,本例的事件路由为:TextBox -> Canvas -> UserControl
-->
<UserControl x:Class="Silverlight20.Interactive.Keyboard"
        xmlns="http://scheR_170_11845@as.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://scheR_170_11845@as.microsoft.com/winfx/2006/xaml"    
        x:Name="userControl"
        KeyDown="userControl_KeyDown">
        
        <Canvas>
                        
                <TextBox x:Name="textBox" Text="TextBox" />
                
        </Canvas>
        
</UserControl>
 
Keyboard.xaml.cs

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Collections.Generic;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Linq;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Net;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Controls;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Documents;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Input;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Media;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Media.Animation;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

using System.Windows.Shapes;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

namespace Silverlight20.Interactive

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

{

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

         public partial class Keyboard : UserControl

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 public Keyboard()

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        initializeComponent();

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         this.Loaded += new RoutedEventHandler(Keyboard_Loaded);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 为 UserControl 注册 KeyUp 事件

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        userControl.KeyUp += new KeyEventHandler(userControl_KeyUp);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 void Keyboard_Loaded( object sender,RoutedEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 让 UserControl 获得焦点,这样该 UserControl 内的元素才能监听到键盘事件

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        userControl.Focus();

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void userControl_KeyDown( object sender,KeyEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 获取 textBox 对象的相对于 Canvas 的 x坐标 和 y坐标

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         double x = ( double)textBox.GetValue(Canvas.LeftProperty);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         double y = ( double)textBox.GetValue(Canvas.TopProperty);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // KeyEventArgs.Key - 与事件相关的键盘的按键 [System.Windows.Input.Key枚举]

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         switch (e.Key)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 按 Up 键后 textBox 对象向 上 移动 1 个像素

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // Up 键所对应的 e.PlatformKeyCode == 38    

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 当获得的 e.Key == Key.UnkNown 时,可以使用 e.PlatformKeyCode 来确定用户所按的键

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.Up:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.TopProperty,y - 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 按 Down 键后 textBox 对象向 下 移动 1 个像素

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // Down 键所对应的 e.PlatformKeyCode == 40

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.Down:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.TopProperty,y + 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 按 Left 键后 textBox 对象向 左 移动 1 个像素

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // Left 键所对应的 e.PlatformKeyCode == 37

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.Left:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.LeftProperty,x - 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 按 Right 键后 textBox 对象向 右 移动 1 个像素

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // Right 键所对应的 e.PlatformKeyCode == 39    

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.Right:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.LeftProperty,x + 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 default:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 同上:Key.W - 向上移动; Key.S - 向下移动; Key.A - 向左移动; Key.D - 向右移动

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         switch (e.Key)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // KeyEventArgs.Handled - 是否处理过此事件

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 如果在文本框内敲 W ,那么文本框会向上移动,而且文本框内也会被输入 W

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 // 如果只想移动文本框,而不输入 W ,那么可以设置 KeyEventArgs.Handled = true 告知此事件已经被处理完毕

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.W:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.TopProperty,y - 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        e.Handled = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.S:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.TopProperty,y + 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        e.Handled = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.A:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.LeftProperty,x - 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        e.Handled = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 case Key.D:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        textBox.SETVALue(Canvas.LeftProperty,x + 1);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                        e.Handled = true;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                 default:

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                         break;

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                 private void userControl_KeyUp( object sender,KeyEventArgs E)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         /*

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        System.Windows.Input.Keyboard.Modifiers - 当前按下的辅助键 [System.Windows.Input.ModifierKeys枚举]

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.None - 无

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.Alt - Alt 键

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.Control - Ctrl 键

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.Shift - Shift 键

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.Windows - Windows 键

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                ModifierKeys.Apple - Apple 键(苹果电脑)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        */

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件


稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         // 按 Ctrl + M 则将 textBox 的位置设置为其初始位置

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                         if (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.M)

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        {

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                textBox.SETVALue(Canvas.LeftProperty,0d);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                                textBox.SETVALue(Canvas.TopProperty,0d);

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

                }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

        }

稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件

}
 
 

大佬总结

以上是大佬教程为你收集整理的稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件全部内容,希望文章能够帮你解决稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。