WPF 使用TextBox做密码输入框

WPF 使用TextBox做密码输入框密码输入框需要输入的密码不能显示明文,用其他的特殊字符代替显示。显示效果如下:Xaml部分代码如下:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

密码输入框需要输入的密码不能显示明文,用其他的特殊字符代替显示。
显示效果如下:
在这里插入图片描述

Xaml部分代码如下:

<Window x:Class="TextBoxPwd.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TextBoxPwd"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <TextBox FontFamily="Courier New" x:Name="pwd" FontSize="20" Foreground="Transparent" Text="sdfsddfsfs"/>

        <TextBox FontFamily="Courier New"  FontSize="20"  Text="sdfsddfsfs"/>

    </StackPanel>
</Window>

后台代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TextBoxPwd
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            pwd.TextDecorations = new TextDecorationCollection(new TextDecoration[] {
                new TextDecoration() {
                     Location= TextDecorationLocation.Strikethrough,
                      Pen= new Pen(Brushes.Black, 10f) {
                          DashCap =  PenLineCap.Round,
                           StartLineCap= PenLineCap.Round,
                            EndLineCap= PenLineCap.Round,
                             DashStyle= new DashStyle(new double[] {0.0,1.2 }, 0.6f)
                      }
                }

            });

        }
    }
}

上面这种方式存在多种问题,直接使用WPF提供的控件也是可以的绑定部分也有方式实现。现在提供一种使用TextBox+Converter来实现的方式。
在这里插入图片描述
converter如下:

 public class PassWordConverter
        :IValueConverter
    {
        private string realWord = "";

        private char replaceChar = '*';

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if(parameter != null)
            {
                string temp=parameter.ToString();
                if(!string.IsNullOrEmpty(temp))
                {
                    replaceChar= temp.First();
                }
            }

            if (value != null)
            {
                realWord = value.ToString();
            }
           

            string replaceWord = "";
            for(int index=0; index < realWord.Length; ++ index)
            {
                replaceWord += replaceChar;
            }

            return replaceWord;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string backValue = "";
            if(value != null)
            {
                string strValue = value.ToString();
                for(int index =0; index < strValue.Length;++index)
                {
                    if(strValue.ElementAt(index)== replaceChar)
                    {
                        backValue += realWord.ElementAt(index);
                    }
                    else
                    {
                        backValue += strValue.ElementAt(index);
                    }
                }
            }
            return backValue;
        }

    }

使用:

<Window x:Class="WpfApp2.Window4"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="Window4" Height="450" Width="800">
    <Window.Resources>
        <local:PassWordConverter x:Key="passWordConverter"/>
    </Window.Resources>
    <StackPanel Margin="30">
        <TextBox 
            FontSize="18"
            Height="30"
            Foreground="Red"            
            Text="{Binding Word,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource passWordConverter}}"/>
        <TextBox 
            FontSize="18"
            Height="30"
            Foreground="Red"            
            Text="{Binding Word,UpdateSourceTrigger=PropertyChanged}"/>
    </StackPanel>
</Window>


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 20佳应用大图片背景的优秀站点作品

    20佳应用大图片背景的优秀站点作品

    2022年1月24日
    43
  • google Gmail_国外的新鲜玩意

    google Gmail_国外的新鲜玩意前不久,Google推出了Buzz,Buzz的说白了,就像QQ空间里面的好友关注,每天你登陆后,你都可以看到你所关注的好友做了哪些更新。让你和好友的关系更紧密。事实上,这个功能我甚至不会去使用它。为什么呢?因为我现在QQ上的好友更新已经太多了,我光是看QQ好友的更新已经觉得很累了。再去关注Buzz,想把我累死啊。。 所以其实现在中国的互联网市场上,成功还是腾讯和百度,Google是一个竞争…

    2022年10月15日
    4
  • 磁盘显示没有初始化找到数据法子[通俗易懂]

    磁盘显示没有初始化找到数据法子[通俗易懂]没有初始化是因为分区表损坏了,导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子没有初始化是因为分区表损坏了,导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子工具/软件:光明数据恢复软件步骤1:程序打开后,直接双击需要恢复的物理盘,没有初始化需要从磁盘恢复文件。步骤2:坐等软件扫描完成一般需要几分钟到半个小时,稍微耐心等下即可。步骤3:打钩所有需要恢复的文件,然后点右上角的保存,《另存为》按钮,将打钩的文件拷贝出来。步骤4:最后一步只需要等程序将文件复制完成就可以了

    2022年9月21日
    6
  • bp神经网络的设计方法_bp神经网络例子

    bp神经网络的设计方法_bp神经网络例子基于BP神经网络的室内声源定位算法的实现(附有程序)问题描述现在有一个安静的房子,有一个人在房间里走动,我要利用屋里的麦克风接收这个人的脚步声,然后对这个人进行定位。问题的意义声源定位,这个问题的研究意义重大,它能克服视觉定位的缺点(即只能对看得到的地方进行定位)。问题的研究方法本文只讨论基于麦克风阵列的声源定位(即利用麦克风收集声源信息)。目前解决这个问题的主流方法有三个,分别是基于最大输出功率的可控波束形成技术、基于高分辨率谱估计技术、基于声达时间差的定位技术。这三种方法都是通过研究声音的

    2022年9月22日
    1
  • Lucene 3.0.0 的TokenStream与Analyzer

    Lucene 3.0.0 的TokenStream与Analyzer如果你看的Lucene相关的书是很老版本的,比如说2.4或者更早,那么对于这个版本中的Analyzer可能就不那么容易接受了,我也是看的<lucene分析与应用>这本书,比较古老的版本.今天读了一下源代码,大概说说心得,我从SimpleAnalyzer说起.SimpleAnalyzer的作用就是把一段字符串中除了符号和非文字的内容作为分…

    2022年7月22日
    11
  • 硬件知识:DP接口和HDMI接口对比,看完你就懂了!

    硬件知识:DP接口和HDMI接口对比,看完你就懂了!电脑显示器高清传输通过会用到两个接口,就是DP接口和HDMI接口,今天电脑学习小编带大家对比一下这两个接口。一、DP接口DisplayPort缩写DP,是一个由PC及芯片制造商联盟开发,视…

    2022年7月22日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号