[UWP小白日记-15]在UWP手机端实时限制Textbox的输入

说实话重来没想到验证输入是如此的苦逼的一件事情。

网上好多验证都是在输入完成后再验证,我的想法是在输入的时候就限制输入,这样我就不用再写代码来验证了

应为是手机端,所以不用判断其他非法字符,直接把Textbox的属性InputScope设置为"Number"就是了,反正在目前版本的UWP中纯数字键盘还无法切换到其他的字符键盘去

下面的代码是一个金额文本框的验证,算是抛砖引玉吧。欢迎还有更好的方案指点!

直接上代码:

/// <summary>
        /// 检查输入金额,当检测到小数掉后只能输入2位小数
        /// 当充满12个字符后只能修改小数的值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void valueTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            //如果不为空
            if (valueTextBox.Text != string.Empty)
            {
                if (valueTextBox.Text.Contains(‘.‘))
                {

                    if (valueTextBox.Text.Count() == 10)
                    {
                        valueTextBox.MaxLength = valueTextBox.Text.IndexOf(‘.‘) + 3;
                    }
                    else
                    {
                        valueTextBox.MaxLength = valueTextBox.Text.IndexOf(‘.‘) + 3;
                    }
                }
                else
                {
                    //当整数达到9位后自动补全小数位,并移动光标到最后一位
                    if (valueTextBox.Text.Count() == 9)
                    {
                        //valueTextBox.Text += ".00";
                        valueTextBox.MaxLength = 9;
                        valueTextBox.SelectionStart = valueTextBox.Text.Length;
                    }
                }
            }
            else
            {
                //为空就重置金额输入框的最大字符数为12
                valueTextBox.MaxLength = 12;
            }

        }
        /// <summary>
        /// 当整数位为9位且当前输入的是小数点时,设置textbox最大字符数为12,移动光标到最后位置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void valueTextBox_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            //不知道为什么和默认的小数点的代码不一样,默认为110
            if (e.Key.ToString() == "190")
            {
                if (valueTextBox.Text.Count() == 9)
                {
                    valueTextBox.MaxLength = 12;
                    valueTextBox.SelectionStart = valueTextBox.Text.Length;
                }
            }
        }

太晚了下次再补GIF上来

来自为知笔记(Wiz)

时间: 2024-10-23 02:50:16

[UWP小白日记-15]在UWP手机端实时限制Textbox的输入的相关文章

[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)

前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Entity Framework Core(Entity Framework 7)下文将简称:EF 1.在UWP中使用EF需要更新Microsoft.NETCore.UniversalWindowsPlatform到大于“5.2.2”的版本. 2.直接在“程序包管理器控制台”输入命令来更新:Update-P

[UWP小白日记-3]记账项目-1

学了一段时间的UWP,来个项目试试手. 本来是想边做边学MVVMLight的结果感觉MVVM对于萌新来说太高难,以后再把这个项目改造成MVVMLight框架的项目. 下面进入正题. 中间那快空白打算放gridview,用来放标签.利用DataTemplate读取数据库里的标签表. 头部标题和底部标签没什么好说的,主要说下那个pivot的实现. 先来看看图,就知道有什么问题了,然后在解决这个问题. 鼠标点最左边尽然也能跳转页面,这什么鬼,改了他的默认Styel一样不行. 1 <Style x:Ke

[UWP小白日记-3]记账项目-2

手机端: PC端: 待续……

[UWP小白日记-4]记账项目-2

手机端: 待续…… 哈哈这个代码真是好长时间啊,没办法萌新你们都懂的,UI是改了又改,知识也在慢慢积累, 所以这效率就低下了点 UI是改了又改,代码是不断了改,所以搞到现在都没开发完成

小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD

发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公开的漏洞数据库,但数量大. ##其中会有漏洞利用代码,如:https://www.exploit-db.com/ [kali集成] [email protected]:~# searchsploit tomcat -------------------------------------------

[UWP小白日记-2]SQLite数据库DOME

数据库说简单点就是增删改查,但是对新手来说也是要爆肝的.作为一个新手爆肝无数次啊, 血的教训啊现在UWP的教程又少,说多了都是泪.留下来免得以后又爆肝.还有:一定要写注释!一定要写注释!一定要写注释! 重要的事情说三遍! 1.首先,准备工作: 1)引用: 获取途径:VS里的扩展和更新.NuGet等. 2)数据库模型: 1 internal class ACCOURT 2 { 3 public ACCOURT() { } //空构造函数 4 public ACCOURT(int ID,double

[UWP小白日记-7]转换MVA学院的XML字幕为SRT (二)

瞎扯淡 上个版本,非常蠢用来N多的循环导致非常卡性能烂得不行,这次使用XmlDocument类来读取XML字幕 其实根本不用各种扒XML字幕,好吧我这是学习使用XmlDocument类,嗯就是这个样子的.(⊙﹏⊙)b , 正文 其实这个小程序,关键就是读取文件的时候要正确的转码,应为系统TXT文本默认使用的是ANIS编码,而XmlDocument使用的是UTF8. 不转码妥妥的乱码. 先来看下成品,最后我会打包为APP供大家使用的.(GIF录制工具ScreenToGif,开源并且使用的是WPF开

[UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库

利用应用程序设置来实现此功能. 1.首先,获取APP设置的容器: ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; 由于获取容器的时候并没有给key为FirestStart的赋值,所以下面就直接判断是不是为null,为null就是第一次运行APP, 然后在else里给key为FirestStart的赋值,那么else的代码就只能执行一次了.当然以后在UI上可以添加一个switchButt

[UWP小白日记-14]正则表达式

匹配浮点数: ^(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$ 匹配2位浮点数:^(([1-9]+[0-9]*.{1}[0-9]{1,2})|([0].{1}[1-9]+[0-9]{1,2})|([1-9][0-9]{1,2})|([0][.][0-9]+[1-9]{1,2}))$ 来自为知笔记(Wiz)