关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,改最少的代码!!!

这篇博客介绍了一种方法,通过在PasswordBox旁边添加一个TextBox来实现在不修改PasswordBox样式的情况下,显示输入的密码。当PasswordBox获得焦点时,TextBox隐藏,显示密码;失去焦点且密码为空时,TextBox显示,提示用户输入密码。这种方法提供了更直观的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:不需要像其他方案改任何PasswordBox的样式,直接在同样的位置加个texbox控件显示隐藏即可

1.xaml,注意关键代码,样式之类可以不管

  <!-- 密码 -->
            <Border Grid.Row="7" Style="{StaticResource InputBorderStyle}">
                <Canvas>
                    <Image Canvas.Top="9"
                           Canvas.Left="19"
                           Width="12"
                           Height="15"
                           Source="../images/icon_login_password.png" />
                    <PasswordBox Canvas.Top="0"
                                 Canvas.Left="45"
                                
                                 Style="{StaticResource InputPasswordStyle}"
                                 x:Name="tboxPassword"
                                 GotFocus="tboxPassword_GotFocus"
                                 LostFocus="tboxPassword_LostFocus" />
                    <!-- 请输入密码提示 -->
                    <TextBox Canvas.Top="0"
                             Canvas.Left="45"
                             Visibility="Hidden"
                             x:Name="tboxPasswordPlaceHolder"
                             Text="请输入密码"                             
                             Style="{StaticResource InputAccountStyle}"
                             GotFocus="tboxPasswordPlaceHolder_GotFocus"
                             />
                </Canvas>
            </Border>

2.xaml.cs

 private void tboxPassword_GotFocus(object sender, RoutedEventArgs e)
        {
            var password = sender as PasswordBox;
            if (password != null)
            {
                var border = VisualTreeHelpers.FindAncestor<Border>(this.tboxPassword);
                if (border != null)
                {
                    border.BorderBrush = BrushGotFocus;
                }
            }
        }
       
        private void tboxPassword_LostFocus(object sender, RoutedEventArgs e)
        {
            var password = sender as PasswordBox;
            if (password != null)
            {
                var border = VisualTreeHelpers.FindAncestor<Border>(this.tboxPassword);
                if (border != null)
                {
                    border.BorderBrush = BrushLostFocus;
                }
                if (string.IsNullOrWhiteSpace(password.Password))
                {
                    password.Visibility = Visibility.Hidden ;
                    tboxPasswordPlaceHolder.Visibility = Visibility.Visible;
                }
            }
        }
        private void tboxPasswordPlaceHolder_GotFocus(object sender, RoutedEventArgs e)
        {
            tboxPassword.Visibility = Visibility.Visible;
            tboxPasswordPlaceHolder.Visibility = Visibility.Hidden;
            tboxPassword.Focus();
        }

Vivado2023是一款集成开发环境软件,用于设计和验证FPGA(现场可编程门阵列)和可编程逻辑器件。对于使用Vivado2023的用户来说,license是必不可少的。 Vivado2023的license是一种许可证,用于授权用户合法使用该软件。许可证分为多种类型,包括评估许可证、开发许可证和节点许可证等。每种许可证都有不同的使用条件和功能。 评估许可证是免费提供的,让用户可以在一段时间内试用Vivado2023的全部功能。用户可以使用这个许可证来了解软件的性能和特点,对于初学者和小规模项目来说是一个很好的选择。但是,使用评估许可证的用户在使用期限过后需要购买正式的许可证才能继续使用软件。 开发许可证是付费的,可以永久使用Vivado2023的全部功能。这种许可证适用于需要长期使用Vivado2023进行开发的用户,通常是专业的FPGA设计师或工程师。购买开发许可证可以享受Vivado2023的技术支持和更新服务,确保软件始终保持最新的版本和功能。 节点许可证是用于多设备或分布式设计的许可证,可以在多个计算机上安装Vivado2023,并共享使用。节点许可证适用于大规模项目或需要多个处理节点进行设计的用户,可以提高工作效率和资源利用率。 总之,Vivado2023 license是用户在使用Vivado2023时必须考虑的问题。用户可以根据自己的需求选择合适的许可证类型,以便获取最佳的软件使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值