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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • H3C交换机配置常用命令「建议收藏」

    H3C交换机配置常用命令「建议收藏」1.配置文件相关命令[Quidway]displaycurrent-configuration//显示当前生效的配置[Quidway]displaysaved-configuration//显示flash中配置文件,即下次上电启动时所用的配置文件&amp;lt;Quidway&amp;gt;resetsaved-configuration…

    2022年6月20日
    38
  • PMP第五章:项目范围管理

    PMP第五章:项目范围管理项目范围管理的目的:做且只做所需的全部工作,以成功完成项目。✓产品范围——某项产品、服务或成果所具有的特性和功能✓项目范围——为交付具有规定特性与功能的产品、服务或成果而必须完成的工作产品范围决定项目范围,项目范围有时也包括产品范围,需要根据上下文来理解。项目范围管理的过程规划范围管理→收集需求→定义范围→创建工作分解结构(创建WBS)→控制范围→确认范围1、规划范围管理:制定项目范围管理计划2、收集需求:收集、记录干系人需求,收集干系人想要什么?…

    2022年9月22日
    0
  • sql注入详解_sq注入教程

    sql注入详解_sq注入教程SQL注入(SQLInjection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询…

    2022年10月3日
    2
  • DEDECMS首页调用图片集里的多张图片

    DEDECMS首页调用图片集里的多张图片

    2021年9月19日
    39
  • vmware15虚拟机激活码【2021免费激活】「建议收藏」

    (vmware15虚拟机激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~BI7J…

    2022年3月22日
    580
  • 在Linux里设置用户环境变量的方法「建议收藏」

    在Linux里设置用户环境变量的方法「建议收藏」在linux里设置环境变量的方法(exportPATH)1.修改当前用户下的.bash_profile文件没有ROOT用户权限无法修改ETC下的系统变量,只能修改当前用户下的环境变量$cd(进入用户登陆目录)如当前用户是weblogic那就进入/home/weblogic目录$ls–al查看目录底下是否存在.bash_profile文件

    2022年9月2日
    3

发表回复

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

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