精通Silverlight——12.3.3 键盘事件示例

本文介绍了一个简单的键盘事件处理示例,演示了如何通过KeyEventArgs类获取按键信息,并实现了类似复制和粘贴的功能。

  本节举一个使用键盘事件的示例,很简单,就是简单的处理按键的事件,通过获取KeyEventArgs类型的属性来获取键值信息,示例效果如图所示。

在该示例中,当单击任何键盘时,会在文本块中显示该KeyboardEventArgs类的四个参数的值,如果按下的值为Ctrl+C,则会隐藏矩形。如果按下Ctrl+V,则重新显示矩形,形成类似复制和粘贴的效果。

示例的XAML代码简单的绘制了一个矩形和两个TextBlock对象,代码如下所示。

<Canvas

        xmlns="http://schemas.microsoft.com/client/2007"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        x:Name="parentCanvas"

        Loaded="Page_Loaded"

        x:Class="KeyBoardDemo1.Page;assembly=ClientBin/KeyBoardDemo1.dll"

        Width="640"

        Height="480"

        Background="White"

        >

  <!--myTextBlock用于显示按键值的文本-->

  <TextBlock Canvas.Left="200"

  x:Name="myTextBlock"

  Text="Display KeyDown event arguments" />

  <!--Canvas用于实现一个按钮效果-->

         <Canvas Width="278" Height="58" Canvas.Left="166" Canvas.Top="50" x:Name="Btn1">

                   <Rectangle Width="276" Height="58" Fill="#FFCC2B2B" Stroke="#FF000000" x:Name="Rec1"/>

                   <TextBlock Width="200" Height="24" TextWrapping="Wrap" x:Name="Txt1" Canvas.Left="87" Canvas.Top="17">

      <Run Text="Press Ctrl+C to copy"/></TextBlock>

         </Canvas>

</Canvas>

本示例分别处理了根画布的KeyUpKeyDown事件,KeyUp事件用于实现复制效果,KeyDown事件则用于在TextBlock上显示按钮信息,代码如下所示。

{

    public partial class Page : Canvas

    {

        public void Page_Loaded(object o, EventArgs e)

        {

            // Required to initialize variables

            InitializeComponent();

            this.KeyDown += new KeyboardEventHandler(Page_KeyDown);

            this.KeyUp += new KeyboardEventHandler(Page_KeyUp);

        }

        //当键盘被释放时

        void Page_KeyUp(object sender, KeyboardEventArgs e)

        {

            //Ctrl+V键按下并释放时

            if ((e.Key == 51) && (e.Ctrl == true))

            {

                Btn1.Opacity = 1;

            }

            //Ctrl+C键按下并释放时

            if((e.Key==32)&&(e.Ctrl==true))

            {

                Btn1.Opacity = 0;

            }

        }

        //处理KeyDown事件,通过KeyboardEventArgs获取键盘信息

        void Page_KeyDown(object sender, KeyboardEventArgs e)

        {

            //获取Key信息

            string msg = "key:" + e.Key.ToString();

            //PlatformKeyCode信息

            msg += "platformkeycode:" + e.PlatformKeyCode.ToString();

            //获取Shift信息

            msg += "shift:" + e.Shift.ToString();

            //获取Ctrl的信息

            msg += "ctrl:" + e.Ctrl.ToString() ;

            //输出到文本文件

            myTextBlock.Text = msg;

        }

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值