Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何验证文本框中输入的每个新字符_Vb.net_Winforms - Fatal编程技术网

Vb.net 如何验证文本框中输入的每个新字符

Vb.net 如何验证文本框中输入的每个新字符,vb.net,winforms,Vb.net,Winforms,所以我一直在研究这个温度转换器,从华氏到摄氏,反之亦然,基本上它所做的是当用户在相应的文本框中输入一个数字时,它会自动在下面的标签中显示转换的结果,我试图不让某人在文本框中写字母,当某人键入第一个字符作为字母时,我成功了,但当用户输入一个数字,然后程序试图计算一个字母时,程序崩溃了,我不知道如何让if函数在计算和显示结果之前验证每个新字符输入 我尝试使用ValtxtFahrenheit.Text,但它只验证第一个字符,我还尝试了Char.isDigittxtFahrenheit.Text=Fal

所以我一直在研究这个温度转换器,从华氏到摄氏,反之亦然,基本上它所做的是当用户在相应的文本框中输入一个数字时,它会自动在下面的标签中显示转换的结果,我试图不让某人在文本框中写字母,当某人键入第一个字符作为字母时,我成功了,但当用户输入一个数字,然后程序试图计算一个字母时,程序崩溃了,我不知道如何让if函数在计算和显示结果之前验证每个新字符输入

我尝试使用ValtxtFahrenheit.Text,但它只验证第一个字符,我还尝试了Char.isDigittxtFahrenheit.Text=False,它也只验证第一个字符,我得到了相同的输出

'此部分在相应的文本框更改后执行 私有子txtFahrenheit_TextChangedByVal发送方作为对象,ByVal e作为事件args处理txtFahrenheit.TextChanged '当用户的输入等于八个字符时,此部分设置一个弹出窗口 如果txtfhrenheit.TextLength=8,则 MessageBox.show您已超过最大输入字符数 如果结束 '此部分验证用户的输入,启用清除按钮,计算并显示reuslt 如果Char.isDigittxtFahrenheit.Text=True,则 btnClear.Enabled=True 整数形式的华氏度数=txtfhrenheit.Text-32/1.8 lblResultC.Text=华氏度至管柱+°C 如果结束 '此部分验证用户是否先输入字母,并将其删除,同时显示弹出窗口 如果ValtxtFahrenheit.Text=False,txtFahrenheit.Text=0=False,txtFahrenheit.Text=String.Empty=False,则 txtfhrenheit.Text=String.Empty lblResultC.Text=String.Empty MessageBox.Show输入无效。请只使用数字 回来 如果结束 '当文本框为空时,此部分清除标签结果 如果txtfhrenheit.Text=则 lblResultC.Text=String.Empty 回来 如果结束 端接头 您可以像这样尝试使用try-catch:

try
{
    double d = Convert.ToDouble(txtFahrenheit.Text);//
    // Calculate the equivalent Celsius and show it
}
catch (Exception)
{
}

最简单也是我个人认为最好的答案是让WinForms通过使用控件为您处理数据验证。您将处理事件以进行转换并获得控件的名称


还值得一提的是,您可能应该将转换移动到一个单独的函数中

空的试一试?不。请改用double.TryParse。如果您返回到它的历史记录,那么@LarsTechIt之前有C标记也很好。文本框有一个MaxLength属性,所以您不需要第一次检查。只需使用Integer.TryParse或Decimal.TryParse等检查输入是否为有效数字。一个蒙面文本框也可以。谢谢,它比我编写的代码简单多了,几乎删除了所有东西哈哈