如何删除文本框中不是数字的字符?

时间:2019-03-19 17:29:31

标签: uwp

我需要使用文本更改功能,因为我还需要允许通过语音和墨水手写输入

private void Year_TextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
        {
            //after text changing check every character to see if it's an int.

            for (int i = 0; i < sender.Text.Length; i++)
            {
                if(Char.IsNumber(sender.Text[i]))
                {
                    return;
                }

                else if (!Char.IsNumber(sender.Text[i]))
                {
                    sender.Text.Remove(i);
                }
            }
        }

2 个答案:

答案 0 :(得分:1)

首先,让我们问一个问题:如何确定一个char是否为数字? 在这种情况下,我通常更喜欢将给定的char更改为number。如果是数字,则答案在0到9之间。 那么,现在的问题是如何转换?         最简单的方法是用char'0'减去。因此,通过减去我们得到的差就是原始数。 例如,char'0'的ASCII值为48              char'5'的ASCII值为53 因为字符之间的差异使我们获得了ASCII值之间的差异,所以我们得到了数字。

因此,现在从文本框中获取char并减去每个char为'0'的char,如果其值不在0到9之间,则可以删除。

答案 1 :(得分:1)

为什么不使用UWP - Windows Community Toolkit的TextBox扩展名?它可以帮助您做出所有判断。

您只需要为您的UWP项目安装nuget软件包function setUp() { project = document.getElementById("project"); ctx = project.getContext("2d"); width = 505; height = 900; mid = width / 2; midh = height / 2; startPx = width / 2 - 30; startPy = height - 150; audio = new Audio("bgm.mp3"); audio.play(); img = new Image(); img2 = new Image(); img.src = "bg.png"; img2.src = "fighterjet.png" img.onload = function() { ctx.shadowColor = "#ffffff"; ctx.shadowBlur = 15; ctx.drawImage(img, 0, 0, width, height); ctx.drawImage(img2, startPx, startPy); } window.addEventListener("keydown", checkKeyPress); // Here ! And do something about that start button or the game will start over again... gameData.interval = window.setInterval(refreshGame, 100); document.getElementById("start").style.display = "none"; project.focus(); } ,然后在XAML页面上使用它,如下所示:

Microsoft.Toolkit.Uwp.UI
xmlns:extensions="using:Microsoft.Toolkit.Uwp.UI.Extensions"