第06课 键盘事件处理

news/2024/7/4 0:53:39 标签: silverlight, textbox, object, button, string, class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

本文为系列文章第六篇,介绍Silverlight中的键盘处理事件,在Silverlight 2中,支持KeyDown和KeyUp两个事件。

声明事件

所有的事件声明过程都是一样的,在XAML中或者是在代码中进行注册。

class="code"><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>

或者在代码中注册:

class="code">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(class="tags" href="/tags/OBJECT.html" title=object>object sender, KeyEventArgs e)
    {

    }

    private void ellipse_KeyDown(class="tags" href="/tags/OBJECT.html" title=object>object sender, KeyEventArgs e)
    {

    }
}

使用事件参数KeyEventArgs

使用事件参数可以获取到事件数据,可以使用的属性有Key、PlatformKeyCode、Handled、Source。

class="code">private void ellipse_KeyUp(class="tags" href="/tags/OBJECT.html" title=object>object sender, KeyEventArgs e)
{
    if (e.Key == Key.R)
    {
        //......
    }
    else if(e.Key == Key.Ctrl && e.Key == Key.U)
    { 
        //......
    }
}

 

在事件数据中,Handled有时候非常有用,可以用来判断事件是否已经处理。

键盘路由事件

键盘事件KeyDown和KeyUp都支持路由事件,如下面的示例。

class="code"><Canvas x:Name="LayoutRoot" Background="#46461F" KeyUp="LayoutRoot_KeyUp">
    <TextBox x:Name="class="tags" href="/tags/TEXTBOX.html" title=textbox>textbox" Width="200" Height="40"
             Canvas.Top="80" Canvas.Left="80"/>
    <Button x:Name="class="tags" href="/tags/BUTTON.html" title=button>button" Width="100" Height="40"
             Canvas.Top="80" Canvas.Left="280"
             Background="Red" Margin="20 0 0 0" Content="Submit"/>
    <TextBlock x:Name="Status" Foreground="White"  Text="Status"
                   Canvas.Left="80" Canvas.Top="200"/>
</Canvas>

为Canvas注册了一个KeyUp事件,编写事件处理程序。

class="code">private void LayoutRoot_KeyDown(class="tags" href="/tags/OBJECT.html" title=object>object sender, KeyEventArgs e)
{
    if (e.Key != Key.Unknown)
    {
        String msg = "The key " + e.Key.ToString();
        msg += " was pressed while focus was on " + (e.Source as FrameworkElement).Name;
        statusTextBlock.Text = msg;
    }
}

运行程序,当文本框获得焦点并输入t时

TerryLee_Silverlight2_0037

按钮获得焦点

TerryLee_Silverlight2_0038

结束语

关于键盘事件都简单的介绍到这儿,希望对大家有用。


http://www.niftyadmin.cn/n/1706827.html

相关文章

如何编写出拥抱变化的代码?

在实际的开发中&#xff0c;编写出易维护和易接受变化的代码并非易事&#xff0c;想要实现可能更加困难重重&#xff1a;源码难于理解、依赖关系指向不明、耦合也很令人头疼。难道就真的就没有办法了吗&#xff1f;本文中我们一起探讨几个技术原则和一些编码理念&#xff0c;让…

linux查找g 位置n,Linux下比find快N倍的文件查找命令

使用linux操作系统的人&#xff0c;一般都用过文件查找命令find&#xff0c;在文件数量非常庞大的时候&#xff0c;比如在高通的android工程项目中&#xff0c;目录大小有十几个G&#xff0c;文件数量非常多&#xff0c;用find命令就太慢了。下面介绍一个比find快得多的命令&am…

HDU 2069 母函数

/* 注意题目要求&#xff0c; 1&#xff0c;输入0&#xff0c;结果1 2&#xff0c;方案中硬币不超过100&#xff1b; 与hdoj 1028不同在于有限定100&#xff0c;数组需要多加一维&#xff1b; */ http://acm.hdu.edu.cn/showproblem.php?pid2069 #include <iostream> #i…

第07课 全屏模式支持

本文为系列文章第七篇&#xff0c;介绍如何在Silverlight 2中使用全屏模式。 实现全屏模式 全屏模式有时候是非常有用的&#xff0c;在Silverlight中&#xff0c;提供了很好的支持。实现起来也非常的简单&#xff0c;其实只有一行代码&#xff0c;编写一个简单的XAML。 <…

linux文件系统课设总结,操作系统课程设计报告:Linux二级文件系统设计.doc

操作系统课程设计报告&#xff1a;Linux二级文件系统设计专 业&#xff1a;计算机科学与技术学 号&#xff1a;********姓 名&#xff1a;***提交日期&#xff1a;2013-3-8【设计目的】(1)本实验的目的是通过一个简单多用户文件系统的设计&#xff0c;加深理解文件系统的内部功…

nyist 163 Phone List

Phone List 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Lets say the phone catalogue listed these numbers…

第08课 使用样式封装控件观感

本文为系列文章第八篇&#xff0c;主要介绍在Silverlight中使用Style元素封装控件观感 Silverlight 支持一种 Style 机制&#xff0c;它允许我们把控件的属性值封装成可重用的资源。我们可以把这些样式声明保存在独立于页面的其他文件中&#xff0c;然后就可以在一个应用程序中…

iphone开发笔记目录

自学Iphone有段时间了&#xff0c;现把博客中iphone开发相关整理一下&#xff0c;方便后人查看&#xff1a; 1 hello world 1.1 第一iPhone程序-Hello World 1.2 IOS SDK介绍 1.3 修改iOS工程属性 2 ios UI基础 2.1 增强版Hello World 2.2 MVC设计模式 …