从文本框中删除数字会产生错误

本文关键字:错误 数字 删除 文本 | 更新日期: 2023-09-27 17:59:01

我有一个TextBox,我想在其中放置一个数字,程序应该通过将其转换为十进制来读取它,但是,在用这个数字进行所需的数学运算后,如果我将其从TextBox中删除,它会立即产生错误:

未处理格式异常(输入字符串格式不正确)

这种情况发生在我试图将文本转换为十进制的行上

private void readW_TextChanged(object sender, EventArgs e)
{
    string _W = readW.Text;
    _Wd = Convert.ToDecimal(_W);
}

从文本框中删除数字会产生错误

您获得

未处理格式异常(输入字符串格式不正确)

因为CCD_ 3不能被转换成CCD_。

如果解析失败,您可以使用TryParse通知您:

bool success = decimal.TryParse(_W, out _Wd);
if (success) {
    // Use the result
}
else {
    // Depending on your needs, do nothing or show an error
}

请注意,_Wstring.Empty可能是您想要忽略的条件,而其他解析失败可能会导致出现错误消息。如果是这样,您的else可能看起来像

else {
    if (!string.IsNullOrEmpty(_W)) ShowAnErrorMessageSomehow();
}

听起来像是在制造它,所以数字无法转换为十进制。不出所料,这会导致转换失败。尝试改用Decimal.TryParse

private void readW_TextChanged(object sender, EventArgs e)
{
    string _W = readW.Text;
    Decimal.TryParse(_W, out _Wd);
}

如果转换失败,这将防止出现异常。它还将返回一个bool,只有当转换成功时,您才能使用它有条件地执行其他操作,例如:

private void readW_TextChanged(object sender, EventArgs e)
{
    string _W = readW.Text;
    if(Decimal.TryParse(_W, out _Wd))
    {
        Console.WriteLine("Valid decimal entered!");
    } 
}

请尝试此代码。但请确保用户只能在文本框中键入数字。谢谢

private void readW_TextChanged(object sender, EventArgs e)
{
    string _W = readW.Text;
    _Wd = Convert.ToDecimal("0"+_W);
}