必赢亚洲手机app下载


始建真机调试证书

某一天366net必赢亚洲手机版

0交互之鼠标事件和键盘事件苹果电脑

[索引页]
[源码下载]

多加商量Silverlight(13) – 2.0相互之鼠标事件和键盘事件

作者:webabcd

介绍
Silverlight 2.0 人机交互:响应用户的鼠标操作和键盘操作
    MouseEnter – 鼠标进入时接触的风浪(分明,此事件无法冒泡)
    MouseLeave – 鼠标离开时接触的轩然大波(显著,此事件不可以冒泡)
    MouseLeftButtonDown – 鼠标左键单击按下时接触的事件
    MouseLeftButtonUp – 鼠标左键单击按下并拓宽时接触的事件
    MouseMove – 鼠标移动时接触的事件
    Mouse伊芙ntArgs.GetPosition() – 鼠标相对于钦定成分的坐标
    MouseButton伊芙ntArgs.Handled – 此事件是不是已被处理
    KeyDown – 鼠标按下时接触的轩然大波
    KeyUp – 鼠标按下并放大时接触的轩然大波
    Key伊夫ntArgs.Key – 与事件有关的键盘的按键
[System.Windows.Input.Key枚举]
    Key伊夫ntArgs.Handled – 是不是处理过此事件
    System.Windows.Input.Keyboard.Modifiers – 当前按下的鼎力相助键
[System.Windows.Input.ModifierKeys枚举]

在线DEMO
http://www.cnblogs.com/webabcd/archive/2008/10/09/1307486.html

示例
1、Mouse.xaml

苹果电脑 1<UserControl x:Class=”Silverlight20.Interactive.Mouse”
苹果电脑 2    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
苹果电脑 3    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml"&gt;
苹果电脑 4    
苹果电脑 5    <!–路由事件是一种可以针对成分树中的五个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件–>
苹果电脑 6    
苹果电脑 7    <!–
苹果电脑 8    MouseLeftButtonDown, MouseLeftButtonUp和MouseMove均为发展冒泡的路由事件
苹果电脑 9    本例的事件路由为:Ellipse -> StackPanel -> UserControl 或 Rectangle -> Canvas -> StackPanel -> UserControl
苹果电脑 10    如果不想更上一层楼冒泡,则可以利用 MouseButton伊夫ntArgs.Handled = true 告知事件已被处理
苹果电脑 11    –>
苹果电脑 12    <StackPanel HorizontalAlignment=”Left” MouseLeftButtonDown=”StackPanel_MouseLeftButtonDown” >
苹果电脑 13
苹果电脑 14        <!–
苹果电脑 15        MouseEnter – 鼠标进入时接触的风浪(显明,此事件不或者冒泡)
苹果电脑 16        MouseLeave – 鼠标离开时接触的轩然大波(显著,此事件不只怕冒泡)
苹果电脑 17        
苹果电脑 18        MouseLeftButtonDown – 鼠标左键单击按下时接触的风云
苹果电脑 19        MouseLeftButtonUp – 鼠标左键单击按下并加大时接触的风云
苹果电脑 20        MouseMove – 鼠标移动时接触的风云
苹果电脑 21        –>
苹果电脑 22        <Ellipse x:Name=”ellipse” Width=”200″ Height=”100″ Fill=”Red” Margin=”5″ 
苹果电脑 23            MouseEnter=”ellipse_MouseEnter” 
苹果电脑 24            MouseLeave=”ellipse_MouseLeave”
苹果电脑 25            MouseLeftButtonDown=”ellipse_MouseLeftButtonDown”
苹果电脑 26            MouseLeftButtonUp=”ellipse_MouseLeftButtonUp”
苹果电脑 27        >
苹果电脑 28        </Ellipse>
苹果电脑 29
苹果电脑 30        <Canvas Margin=”5″>
苹果电脑 31
苹果电脑 32            <!–用于演示拖放的矩形–>
苹果电脑 33            <Rectangle x:Name=”rectangle” Fill=”Blue” Width=”50″ Height=”50″
苹果电脑 34                MouseLeftButtonDown=”rectangle_MouseLeftButtonDown”
苹果电脑 35                MouseLeftButtonUp=”rectangle_MouseLeftButtonUp”
苹果电脑 36                MouseMove=”rectangle_MouseMove”
苹果电脑 37            />
苹果电脑 38            
苹果电脑 39        </Canvas>
苹果电脑 40
苹果电脑 41    </StackPanel>
苹果电脑 42</UserControl>
苹果电脑 43

Mouse.xaml.cs

苹果电脑 44using System;
苹果电脑 45using System.Collections.Generic;
苹果电脑 46using System.Linq;
苹果电脑 47using System.Net;
苹果电脑 48using System.Windows;
苹果电脑 49using System.Windows.Controls;
苹果电脑 50using System.Windows.Documents;
苹果电脑 51using System.Windows.Input;
苹果电脑 52using System.Windows.Media;
苹果电脑 53using System.Windows.Media.Animation;
苹果电脑 54using System.Windows.Shapes;
苹果电脑 55
苹果电脑 56namespace Silverlight20.Interactive
苹果电脑 57苹果电脑 58苹果电脑 59{
苹果电脑 60    public partial class Mouse : UserControl
苹果电脑 61苹果电脑 62    苹果电脑 63{
苹果电脑 64        public Mouse()
苹果电脑 65苹果电脑 66        苹果电脑 67{
苹果电脑 68            InitializeComponent();
苹果电脑 69        }
苹果电脑 70
苹果电脑 71        void ellipse_MouseEnter(object sender, MouseEventArgs e)
苹果电脑 72苹果电脑 73        苹果电脑 74{
苹果电脑 75            ellipse.Fill = new SolidColorBrush(Colors.Yellow);
苹果电脑 76        }
苹果电脑 77
苹果电脑 78        void ellipse_MouseLeave(object sender, MouseEventArgs e)
苹果电脑 79苹果电脑 80        苹果电脑 81{
苹果电脑 82            ellipse.Fill = new SolidColorBrush(Colors.Red);
苹果电脑 83        }
苹果电脑 84
苹果电脑 85        private void ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
苹果电脑 86苹果电脑 87        苹果电脑 88{
苹果电脑 89            ellipse.Fill = new SolidColorBrush(Colors.Yellow);
苹果电脑 90        }
苹果电脑 91
苹果电脑 92        private void ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
苹果电脑 93苹果电脑 94        苹果电脑 95{
苹果电脑 96            ellipse.Fill = new SolidColorBrush(Colors.Blue);
苹果电脑 97
苹果电脑 98            // MouseButton伊芙ntArgs.Handled – 此事件是还是不是已被处理
苹果电脑 99            //     false – 未被拍卖,事件的路由为进步冒泡
苹果电脑 100            //     true – 已被处理,事件的路由为不再冒泡
苹果电脑 101            e.Handled = true;
苹果电脑 102        }
苹果电脑 103
苹果电脑 104        private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
苹果电脑 105苹果电脑 106        苹果电脑 107{
苹果电脑 108            // 即使鼠标单击 rectangle 对象,则 会 执行到此句
苹果电脑 109            // 倘诺鼠标单击 ellipse 对象,则 不会 执行到此句,因为事先 ellipse 对象的 MouseLeftButtonDown 事件中一度设置 e.Handled = true ,所以事件不会冒泡至此
苹果电脑 110            ellipse.Fill = new SolidColorBrush(Colors.Black);
苹果电脑 111        }
苹果电脑 112        
苹果电脑 113
苹果电脑 114
苹果电脑 115        // 是不是正在捕获鼠标
苹果电脑 116        private bool _isMouseCaptured;
苹果电脑 117
苹果电脑 118        // 鼠标垂直方向上的坐标
苹果电脑 119        private double _mouseY;
苹果电脑 120
苹果电脑 121        // 鼠标水平方向上的坐标
苹果电脑 122        private double _mouseX;
苹果电脑 123
苹果电脑 124        private void rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
苹果电脑 125苹果电脑 126        苹果电脑 127{
苹果电脑 128            // MouseButton伊芙ntArgs.GetPosition() – 鼠标相对于钦赐成分的坐标
苹果电脑 129            _mouseY = e.GetPosition(null).Y;
苹果电脑 130            _mouseX = e.GetPosition(null).X;
苹果电脑 131
苹果电脑 132            // CaptureMouse() – 在钦定的成分上捕获鼠标
苹果电脑 133            rectangle.CaptureMouse();
苹果电脑 134            _isMouseCaptured = true;
苹果电脑 135        }
苹果电脑 136
苹果电脑 137        public void rectangle_MouseMove(object sender, MouseEventArgs e)
苹果电脑 138苹果电脑 139        苹果电脑 140{
苹果电脑 141            if (_isMouseCaptured)
苹果电脑 142苹果电脑 143            苹果电脑 144{
苹果电脑 145                // 移动前和活动后的鼠标 垂直方向 和 水平方向 的岗位的差值
苹果电脑 146                double v = e.GetPosition(null).Y – _mouseY;
苹果电脑 147                double h = e.GetPosition(null).X – _mouseX;
苹果电脑 148
苹果电脑 149                // 移动后的 rectangle 对象相对于 Canvas 的坐标
苹果电脑 150                double newTop = v + (double)rectangle.GetValue(Canvas.TopProperty);
苹果电脑 151                double newLeft = h + (double)rectangle.GetValue(Canvas.LeftProperty);
苹果电脑 152
苹果电脑 153                // 设置 rectangle 对象的职位为新的坐标.
苹果电脑 154                rectangle.SetValue(Canvas.TopProperty, newTop);
苹果电脑 155                rectangle.SetValue(Canvas.LeftProperty, newLeft);
苹果电脑 156
苹果电脑 157                // 更新鼠标的当下坐标
苹果电脑 158                _mouseY = e.GetPosition(null).Y;
苹果电脑 159                _mouseX = e.GetPosition(null).X;
苹果电脑 160            }
苹果电脑 161        }
苹果电脑 162
苹果电脑 163        private void rectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
苹果电脑 164苹果电脑 165        苹果电脑 166{
苹果电脑 167            // ReleaseMouseCapture() – 固然指定的因素具有鼠标捕获,则释放该捕获
苹果电脑 168            rectangle.ReleaseMouseCapture();
苹果电脑 169            _isMouseCaptured = false;
苹果电脑 170        }
苹果电脑 171    }
苹果电脑 172}
苹果电脑 173

2、Keyboard.xaml

苹果电脑 174<!–
苹果电脑 175KeyDown – 鼠标按下时接触的风云
苹果电脑 176KeyUp – 鼠标按下并放大时接触的风浪
苹果电脑 177–>
苹果电脑 178<!–
苹果电脑 179KeyDown和KeyUp均为发展冒泡的路由事件,本例的风云路由为:TextBox -> Canvas -> UserControl
苹果电脑 180–>
苹果电脑 181<UserControl x:Class=”Silverlight20.Interactive.Keyboard”
苹果电脑 182    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
苹果电脑 183    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 
苹果电脑 184    x:Name=”userControl”
苹果电脑 185    KeyDown=”userControl_KeyDown”>
苹果电脑 186    
苹果电脑 187    <Canvas>
苹果电脑 188            
苹果电脑 189        <TextBox x:Name=”textBox” Text=”TextBox” />
苹果电脑 190        
苹果电脑 191    </Canvas>
苹果电脑 192    
苹果电脑 193</UserControl>
苹果电脑 194

Keyboard.xaml.cs

苹果电脑 195using System;
苹果电脑 196using System.Collections.Generic;
苹果电脑 197using System.Linq;
苹果电脑 198using System.Net;
苹果电脑 199using System.Windows;
苹果电脑 200using System.Windows.Controls;
苹果电脑 201using System.Windows.Documents;
苹果电脑 202using System.Windows.Input;
苹果电脑 203using System.Windows.Media;
苹果电脑 204using System.Windows.Media.Animation;
苹果电脑 205using System.Windows.Shapes;
苹果电脑 206
苹果电脑 207namespace Silverlight20.Interactive
苹果电脑 208苹果电脑 209苹果电脑 210{
苹果电脑 211    public partial class Keyboard : UserControl
苹果电脑 212苹果电脑 213    苹果电脑 214{
苹果电脑 215        public Keyboard()
苹果电脑 216苹果电脑 217        苹果电脑 218{
苹果电脑 219            InitializeComponent();
苹果电脑 220
苹果电脑 221            this.Loaded += new RoutedEventHandler(Keyboard_Loaded);
苹果电脑 222
苹果电脑 223            // 为 UserControl 注册 KeyUp 事件
苹果电脑 224            userControl.KeyUp += new KeyEventHandler(userControl_KeyUp);
苹果电脑 225        }
苹果电脑 226
苹果电脑 227        void Keyboard_Loaded(object sender, RoutedEventArgs e)
苹果电脑 228苹果电脑 229        苹果电脑 230{
苹果电脑 231            // 让 UserControl 拿到主题,那样该 UserControl 内的因素才能监听到键盘事件
苹果电脑 232            userControl.Focus();
苹果电脑 233        }
苹果电脑 234
苹果电脑 235        private void userControl_KeyDown(object sender, KeyEventArgs e)
苹果电脑 236苹果电脑 237        苹果电脑 238{
苹果电脑 239            // 获取 textBox 对象的对峙于 Canvas 的 x坐标 和 y坐标
苹果电脑 240            double x = (double)textBox.GetValue(Canvas.LeftProperty);
苹果电脑 241            double y = (double)textBox.GetValue(Canvas.TopProperty);
苹果电脑 242
苹果电脑 243            // Key伊夫ntArgs.Key – 与事件相关的键盘的按键 [System.Windows.Input.Key枚举]
苹果电脑 244            switch (e.Key)
苹果电脑 245苹果电脑 246            苹果电脑 247{
苹果电脑 248                // 按 Up 键后 textBox 对象向 上 移动 1 个像素
苹果电脑 249                // Up 键所对应的 e.PlatformKeyCode == 38 
苹果电脑 250                // 当得到的 e.Key == Key.Unknown 时,可以拔取 e.PlatformKeyCode 来规定用户所按的键
苹果电脑 251                case Key.Up:
苹果电脑 252                    textBox.SetValue(Canvas.TopProperty, y – 1);
苹果电脑 253                    break;
苹果电脑 254
苹果电脑 255                // 按 Down 键后 textBox 对象向 下 移动 1 个像素
苹果电脑 256                // Down 键所对应的 e.PlatformKeyCode == 40
苹果电脑 257                case Key.Down:
苹果电脑 258                    textBox.SetValue(Canvas.TopProperty, y + 1);
苹果电脑 259                    break;
苹果电脑 260
苹果电脑 261                // 按 Left 键后 textBox 对象向 左 移动 1 个像素
苹果电脑 262                // Left 键所对应的 e.PlatformKeyCode == 37
苹果电脑 263                case Key.Left:
苹果电脑 264                    textBox.SetValue(Canvas.LeftProperty, x – 1);
苹果电脑 265                    break;
苹果电脑 266
苹果电脑 267                // 按 Right 键后 textBox 对象向 右 移动 1 个像素
苹果电脑 268                // Right 键所对应的 e.PlatformKeyCode == 39 
苹果电脑 269                case Key.Right:
苹果电脑 270                    textBox.SetValue(Canvas.LeftProperty, x + 1);
苹果电脑 271                    break;
苹果电脑 272
苹果电脑 273                default:
苹果电脑 274                    break;
苹果电脑 275            }
苹果电脑 276
苹果电脑 277            // 同上:Key.W – 向上移动; Key.S – 向下活动; Key.A – 向左移动; Key.D – 向右移动
苹果电脑 278            switch (e.Key)
苹果电脑 279苹果电脑 280            苹果电脑 281{
苹果电脑 282                // Key伊夫ntArgs.Handled – 是或不是处理过此事件
苹果电脑 283
苹果电脑 284                // 如若在文本框内敲 W ,那么文本框会向上移动,而且文本框内也会被输入 W
苹果电脑 285                // 假若只想移动文本框,而不输入 W ,那么可以设置 Key伊芙ntArgs.Handled = true 告知此事件已经被处理达成
苹果电脑 286                case Key.W:
苹果电脑 287                    textBox.SetValue(Canvas.TopProperty, y – 1);
苹果电脑 288                    e.Handled = true;
苹果电脑 289                    break;
苹果电脑 290                case Key.S:
苹果电脑 291                    textBox.SetValue(Canvas.TopProperty, y + 1);
苹果电脑 292                    e.Handled = true;
苹果电脑 293                    break;
苹果电脑 294                case Key.A:
苹果电脑 295                    textBox.SetValue(Canvas.LeftProperty, x – 1);
苹果电脑 296                    e.Handled = true;
苹果电脑 297                    break;
苹果电脑 298                case Key.D:
苹果电脑 299                    textBox.SetValue(Canvas.LeftProperty, x + 1);
苹果电脑 300                    e.Handled = true;
苹果电脑 301                    break;
苹果电脑 302                default:
苹果电脑 303                    break;
苹果电脑 304            }
苹果电脑 305        }
苹果电脑 306
苹果电脑 307        private void userControl_KeyUp(object sender, KeyEventArgs e)
苹果电脑 308苹果电脑 309        苹果电脑 310{
苹果电脑 311苹果电脑 312            /**//*
苹果电脑 313            System.Windows.Input.Keyboard.Modifiers – 当前按下的协助键 [System.Windows.Input.ModifierKeys枚举]
苹果电脑 314                ModifierKeys.None – 无
苹果电脑 315                ModifierKeys.Alt – Alt 键
苹果电脑 316                ModifierKeys.Control – Ctrl 键
苹果电脑 317                ModifierKeys.Shift – Shift 键
苹果电脑 318                ModifierKeys.Windows – Windows 键
苹果电脑 319                ModifierKeys.Apple – Apple 键(苹果电脑)
苹果电脑 320            */
苹果电脑 321
苹果电脑 322            // 按 Ctrl + M 则将 textBox 的职位设置为其初始地点
苹果电脑 323            if (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.M)
苹果电脑 324苹果电脑 325            苹果电脑 326{
苹果电脑 327                textBox.SetValue(Canvas.LeftProperty, 0d);
苹果电脑 328                textBox.SetValue(Canvas.TopProperty, 0d);
苹果电脑 329            }
苹果电脑 330        }
苹果电脑 331    }
苹果电脑 332}
苹果电脑 333

OK
[源码下载]

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图