博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】wpf学习笔记4
阅读量:6474 次
发布时间:2019-06-23

本文共 1481 字,大约阅读时间需要 4 分钟。

今天写小东西的时候要用到PasswordBox控件。在实例名后面点个了点之后,发现没有Text这个属性(有Password属性)在网上搜索了一下,发现有三种使用PasswordBox的方法.

  1. 使用其Password属性值(这个是最简单的了)
  2. 使用Binding,把PasswordBox中的密码值与后台数据对象的某个属性关联
  3. 使用PasswordBox的SecurePassword属性

本文主要聊聊第三个方法。SecurePassword这个属性是在.NET 3.5 SP1的时候加进来的属性。

SecurePassword的数据类型是SecureString. 对于SecurePassword类型实例,往里写值容易,往外读值就难了,要不然怎么叫"加密字符串"呢. 特别提醒一点, 如果调用一个SecurePassword实例的ToString()方法,你得到的值永远都是"System.Security.SecureString".

程序的运行界面如下,XAML代码大家自己猜吧,那个反正里面有个PasswordBox的实例,名为passwordBoxPassword.

获取passwordBoxPassword中密码的代码如下:

[c-sharp]
  1. // 使用一个IntPtr类型值来存储加密字符串的起始点 
  2. IntPtr p = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(this.passwordBoxPassword.SecurePassword); 
  3.  
  4. // 使用.NET内部算法把IntPtr指向处的字符集合转换成字符串 
  5. string password = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(p); 
  6.  
  7. // 顺便校验一下 
  8. if (string.IsNullOrEmpty(password) || password!="123456"
  9.     MessageBox.Show("请输入密码", "提示", MessageBoxButton.OK, MessageBoxImage.Asterisk); 
  10.     return
// 使用一个IntPtr类型值来存储加密字符串的起始点 IntPtr p = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(this.passwordBoxPassword.SecurePassword); // 使用.NET内部算法把IntPtr指向处的字符集合转换成字符串 string password = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(p); // 顺便校验一下 if (string.IsNullOrEmpty(password) || password!="123456") { MessageBox.Show("请输入密码", "提示", MessageBoxButton.OK, MessageBoxImage.Asterisk); return; }

 

如果程序中的PasswordBox比较多,建议提前引用System.Runtime.InteropServices名称空间.

转载于:https://www.cnblogs.com/fx2008/archive/2012/03/29/2423492.html

你可能感兴趣的文章
defaultdict的妙用和列表推导式
查看>>
spark任务运行过程的源码分析
查看>>
超大磁盘在线扩容
查看>>
20190308 samba服务、inotify和rsync实现实时同步、防火墙
查看>>
linux试题
查看>>
备考2019一级消防工程师,这份攻略看一下
查看>>
Oracle Stream Replication实例(二)
查看>>
Java类的Hash函数和集合类
查看>>
如何对Linux的grub进行加密
查看>>
Rhel6-mpich2 hpc集群配置文档
查看>>
我的友情链接
查看>>
C# 合并、拆分PPT幻灯片
查看>>
SQLite的Pivot
查看>>
ServletContext 与application的异同
查看>>
华为路由器qos car+nat+dhcp+vlan配置心得
查看>>
我的友情链接
查看>>
企业级基础邮件系统架设
查看>>
一个APP开发有那么难吗?
查看>>
SAP学习环境部署要点
查看>>
RHCE_LAB(6)RHEL5的LVM应用实例(LVM创建)
查看>>