c# - 文本框上的 C# 退格立即创建错误
问题描述
我正在创建一个事件,如果有人在文本框中输入内容,它将使用以下代码显示错误:
try
{
dblCostSqFt = double.Parse(txtCost.Text);
}
catch
{
MessageBox.Show("Error. You must enter valid numbers. Please correct.");
txtCost.Select();
return;
}
这个问题是,如果我输入一个退格键,它会立即抛出该错误消息,我想将它放到不会发生这种情况的地方。
解决方案
您在这里使用用户输入。因此我建议使用Double.TryParse()
如果您有一个字符串,并且您希望它始终是一个双精度数(例如,如果某些 Web 服务正在给您一个字符串格式的双精度数),您将使用
Double.Parse()
.如果您从用户那里收集输入,您通常会使用
Double.TryParse()
,因为它允许您更细粒度地控制用户输入无效输入时的情况。
您的代码将tryparse()
是这样的:
if (!double.TryParse(txtCost.Text, out var dblCostSqFt))
{
MessageBox.Show("Error. You must enter valid numbers. Please correct.");
txtExample.Select(0, txtCost.Text.Length);
return;
}
为了使示例完整并解决问题,可以简单地检查是否Text
不是null
或empty
使用String.IsNullOrEmpty()
制作整个代码:
// makes sure your app isn't crashing upon backspaces.
if(string.IsNullOrEmpty(textCost.Text))
{
// Personally i'd indicate the user nothing is typed in (yet).
return;
}
if (!double.TryParse(txtCost.Text, out var dblCostSqFt))
{
// The user filled in something that can't be parse to doubles.
MessageBox.Show("Error. You must enter valid numbers. Please correct.");
txtExample.Select(0, txtCost.Text.Length);
return;
}
// All is great; Do stuff with dblCostSqFt.
推荐阅读
- javascript - 使用 AJAX 发送信息,错误“mycustompage.htm?aspxerrorpath=”
- vue.js - 自定义分隔符不适用于 .vue 文件中的组件
- regex - 在 vim 上搜索并转换为小写
- processing - 按下按钮时在处理中停止和重新启动游戏
- swift - 调用静态方法而不重复类名
- android - 如何使用 rxjava 在存储库中提出改造请求并使用 LiveData 将其传递给 ViewModel?
- javascript - 如何通过 JavaScript 抓取网页上的自定义元素,以便我可以模拟用户操作,例如单击并通过编码输入值?
- sql - Hive 如何根据列值提取数据并写入本地文件
- git - Git 更改从其他远程分支自动反映在父分支中
- python - 如何叠加不同形状的数组?