【问题标题】:Input string was not in a correct format. Textchange problem [duplicate]输入字符串的格式不正确。 Textchange问​​题[重复]
【发布时间】:2023-03-03 20:26:01
【问题描述】:

C# 代码 我的“登记入住”表格有问题。 我想将 txtsubtotal 和 txtadvancepayment 相乘。 在 textchange 中,如果我在 txtadvancepayment 上输入数字,则总体结果是正确的。但是,如果我清除 txtadvancepayment(以防用户输入错误的值),那将是错误的。错误显示“输入字符串的格式不正确。” 我该怎么办?

我的代码向下

int overalltotal = 0;
              int a = Convert.ToInt32(txtsubtotal.Text);      
              int b = Convert.ToInt32(txtadvancepayment.Text);      
              overalltotal = a - b;      
              txttotalbalance.Text = overalltotal.ToString();

【问题讨论】:

  • 在这里使用tryParse Convert.ToInt32(txtadvancepayment.Text) insted of Convert.ToInt32
  • 请查看其他有关如何验证文本并将其转换为数字的帖子。您的数字字符串并非全是数字,因此您会收到错误消息。

标签: c#


【解决方案1】:

空字符串不能被解析为int。正如其他人所提到的,您可以使用int.TryParse,它接受一个字符串作为第一个参数,一个out int 作为第二个参数,它保存解析的值。你可以这样做:

int overallTotal = 0;
int a = 0;
int b = 0;

// TryParse returns a bool
// If either of these fails, the variable a or b will keep the default 0 value
int.TryParse(txtSubtotal.Text, out a);
int.TryParse(txtAdvancePayment.Text, out b);

// Sum a and b
overallTotal = a + b;

如果您想向用户显示一个或两个字段不是有效整数的错误,您可以分配一个bool 变量,例如var aIsNumber = int.TryParse(...),然后检查aIsNumberbIsNumber 是否为false。如果是这样,那么a 和/或b 无法解析为int

【讨论】:

  • 你的代码很棒。代码短,易于理解。谢谢
【解决方案2】:

您可以使用Int32.TryParse

Int32.Parse 尝试将数字的字符串表示形式转换为其等效的 32 位带符号整数,并返回指示操作是否成功的值。这意味着,如果您的文本框为空或包含无效的数字表示,并且该方法将返回 false,因为它无法将其转换为 int32

例如

  if(Int32.TryParse(txtsubtotal.Text,out var a) 
                   && Int32.TryParse(txtadvancepayment.Text,out var b))
  {
         // Code which requires a and b  
  } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多