在Silverlight 2中创建密码输入框

Silverlight Beta2中,没有提供密码输入框控件,估计在正式版里应该提供吧。Chris Pietschmann自己写了一个,原文地址是:

http://pietschsoft.com/post/2008/03/PasswordTextBox-for-Silverlight-2-Beta-1.aspx

创建一个PasswordTextBox.cs类,代码如下:

///  Copyright 2008 Chris Pietschmann ( http://pietschsoft.com )
///  This work is licensed under a Creative Commons Attribution 3.0 United States License
///   http://creativecommons.org/licenses/by/3.0/us/
///
///  This is a Password TextBox built for use with Silverlight 2 Beta 1
///  The reason this was built, is because the standard TextBox in
///  Silverlight 2 Beta 1 does not have Password support.
///  Original Link:  http://pietschsoft.com/post/2008/03/PasswordTextBox-for-Silverlight-2-Beta-1.aspx
///  

using  System.Windows.Controls; 

namespace  SilverlightPasswordTextBox
{
    
public   partial   class  PasswordTextBox : TextBox
    {
        
public  PasswordTextBox()
        {
            
this .TextChanged  +=   new  TextChangedEventHandler(PasswordTextBox_TextChanged);
            
this .KeyDown  +=   new  System.Windows.Input.KeyEventHandler(PasswordTextBox_KeyDown);
        } 

        
#region  Event Handlers 

        
public   void  PasswordTextBox_TextChanged( object  sender, TextChangedEventArgs e)
        {
            
if  ( base .Text.Length  >=  _Text.Length)
                _Text 
+=   base .Text.Substring(_Text.Length);
            DisplayMaskedCharacters();
        } 

        
public   void  PasswordTextBox_KeyDown( object  sender, System.Windows.Input.KeyEventArgs e)
        {
            
int  cursorPosition  =   this .SelectionStart;
            
int  selectionLength  =   this .SelectionLength; 

            
//  Handle Delete and Backspace Keys Appropriately
             if  (e.Key  ==  System.Windows.Input.Key.Back
                
||  e.Key  ==  System.Windows.Input.Key.Delete)
            {
                
if  (cursorPosition  <  _Text.Length)
                    _Text 
=  _Text.Remove(cursorPosition, (selectionLength  >   0   ?  selectionLength :  1 ));
            }
            
            
base .Text  =  _Text;
            
this .Select((cursorPosition  >  _Text.Length  ?  _Text.Length : cursorPosition),  0 );
            DisplayMaskedCharacters();
        } 

        
#endregion  

        
#region  Private Methods 

        
private   void  DisplayMaskedCharacters()
        {
            
int  cursorPosition  =   this .SelectionStart;
            
            
//  This changes the Text property of the base TextBox class to display all Asterisks in the control
             base .Text  =   new   string (_PasswordChar, _Text.Length); 

            
this .Select((cursorPosition  >  _Text.Length  ?  _Text.Length : cursorPosition),  0 );
        } 

        
#endregion  

        
#region  Properties 

        
private   string  _Text  =   string .Empty;
        
///   <summary>
        
///  The text associated with the control.
        
///   </summary>
         public   new   string  Text
        {
            
get  {  return  _Text; }
            
set
            {
                _Text 
=  value;
                DisplayMaskedCharacters();
            }
        } 

        
private   char  _PasswordChar  =   ' * ' ;
        
///   <summary>
        
///  Indicates the character to display for password input.
        
///   </summary>
         public   char  PasswordChar
        {
            
get  {  return  _PasswordChar; }
            
set  { _PasswordChar  =  value; }
        } 

        
#endregion
    }


 

使用方法:

< UserControl  x:Class ="SilverlightApplication1.Page"
    xmlns
="http://schemas.microsoft.com/client/2007"  
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:myctl
="clr-namespace:SilverlightApplication1;assembly=SilverlightApplication1"  Width ="600"  Height ="480" >
    
< Grid  x:Name ="LayoutRoot"  Background ="White" >
        
< Canvas  Canvas.Top ="20" >           
            
< myctl:PasswordTextBox  x:Name ="UserPassword"  Width ="200"  Height ="30"  Canvas.Top ="40"  Canvas.Left ="20" ></ myctl:PasswordTextBox >
        
</ Canvas >
    
</ Grid >
</ UserControl >

 

注意:要先加入名称空间,具体的值是:

clr-namespace:名称空间全名;assembly=程序集名称

通过使用,发现两个问题:

1,<myctl:PasswordTextBox PasswordChar="" />设置会报错

2,Text="初始值"仍旧是明文

原帖地址:http://blog.csdn.net/net_lover/archive/2008/04/06/2254267.aspx  感谢孟宪会老师

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值