让silverlight支持输入文本框

转载自:http://topic.csdn.net/u/20071019/13/0af521ac-2c01-46ef-85b5-65cd4501f6ae.html
 原文如下:
    众所周知,在silverlight1.0beta中是不支持inputtext(输入文本)的,但是我们可以用另外一种方法来实现输入文本的效果。
在silverlight中文本的显示可以用到两种形式
1   textblock
2   glyphs
glyphs是个不可见元素,没法对文字进行排版,而且也不常用,因此我们这个方法就用textblock来做这个inputtext。
下面讲讲原理:
silverlight支持鼠标和键盘输入,因此我们可以利用键盘输入来获取Key的value然后吧把value赋值给textblock,这样就可以简单的实现输入文本的功能了。
下面我们来看看例子:
新建一个xaml文件,在xaml中加入一个textblock,起名叫input_txt。
然后在js里addEventListener,在EventHandle里根据key的value来给textBlock赋不同值,但是这个暂时还不支持中文,因为中文的输入不是简单的键盘事件。
代码如下:
xaml:  

<Canvas
    xmlns= "http://schemas.microsoft.com/client/2007 "
    xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml "
    Width= "640 "   Height= "480 "
    x:Name= "Page "
    >
    <Canvas.Background >
        <LinearGradientBrush   EndPoint= "1,0.5 "   StartPoint= "0,0.5 " >
            <GradientStop   Color= "#FF000000 "   Offset= "0 "/ >
            <GradientStop   Color= "#FFFFFFFF "   Offset= "1 "/ >
        </LinearGradientBrush >
    </Canvas.Background >
    <Rectangle   x:Name= "background "   Width= "640 "   Height= "480 "   Stroke= "#FF000000 " >
        <Rectangle.Fill >
            <LinearGradientBrush   EndPoint= "0.519,1.273 "   StartPoint= "0.515,-0.061 " >
                <GradientStop   Color= "#FF000000 "   Offset= "0 "/ >
                <GradientStop   Color= "#FF5B5A5A "   Offset= "1 "/ >
            </LinearGradientBrush >
        </Rectangle.Fill >
    </Rectangle >
    <TextBlock   Cursor= "Arrow "   x:Name= "input_txt "   Width= "350 "   Height= "20 "   Canvas.Left= "151 "   Canvas.Top= "132 "   Canvas.ZIndex= "4 "   FontFamily= "Arial "   FontSize= "12 "   Foreground= "#FFFFFFFF "   TextWrapping= "Wrap "/ >
    <Rectangle   x:Name= "text_input_bg "   Width= "352 "   Height= "22 "   Stroke= "#FF000000 "   Canvas.Left= "149 "   Canvas.Top= "129 "   Canvas.ZIndex= "3 " >
        <Rectangle.Fill >
            <LinearGradientBrush   EndPoint= "0.528,0 "   StartPoint= "0.526,1.45 " >
                <GradientStop   Color= "#FF000000 "   Offset= "0 "/ >
                <GradientStop   Color= "#FF696969 "   Offset= "1 "/ >
            </LinearGradientBrush >
        </Rectangle.Fill >
    </Rectangle >
    <TextBlock   Width= "113 "   Height= "24 "   Canvas.Left= "263 "   Canvas.Top= "167 "   Canvas.ZIndex= "2 "   FontFamily= "Arial "   FontSize= "14 "   Foreground= "#FFFFFFFF "   TextWrapping= "Wrap " > <Run   Text= "text   input   solution "/ > </TextBlock >
</Canvas >  


javascript:


if   (!window.UntitledProject1)
    window.UntitledProject1   =   {};

UntitledProject1.Page   =   function()  
{
}

UntitledProject1.Page.prototype   =
{
    handleLoad:   function(control,   userContext,   rootElement)  
    {
        this.control   =   control;
       
        var   page   =   rootElement.findName( "Page ");
        page.addEventListener( "KeyUp ",   Silverlight.createDelegate(this,   this.handleKeyUp));
    },
    handleKeyUp:   function(sender,   keyEventArgs)  
    {
        var   input_txt   =   sender.findName( "input_txt ");
        var   keyvalue   =   keyEventArgs.key;
        var   textvalue;
        switch   (keyvalue)
        {
        case   30:
            textvalue   =   "A ";
            break;
        case   31:
            textvalue   =   "B ";
            break;
      ……
        default:
            textvalue   = " ";
        }
        input_txt.Text   +=   textvalue;            
    }
}  

转载于:https://www.cnblogs.com/jerry-zheng/archive/2007/12/11/990502.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值