【问题标题】:sum two textboxes whenever button is clicked每当单击按钮时将两个文本框相加
【发布时间】:2014-01-23 08:58:12
【问题描述】:

好的,这是我的详细问题。我创建了 textbox1 来包含一个计算,每当我单击 btnOne 时,txtbox1 都会给出结果。每次我单击 btnTwo 按钮时,名为 textbox2 的第二个文本框将在 textbox1 中添加数字。我尝试使用下面的代码,但它只将 textbox1 中的数字作为文本添加,因此将数字放在 textbox2 中的数字旁边,而不是对它们求和。我怎样才能让它发挥作用?

string a;
void textbox1_TextChanged(object sender, EventArgs e)
{
    a = textbox1.Text;
}

void btnTwo_Click(object sender, EventArgs e)
{            
    textbox2.Text += a.ToString();    
}

【问题讨论】:

    标签: c# textbox


    【解决方案1】:

    您应该将文本转换Double (ot int)

    using System.Globalization;
    
        void btnTwo_Click(object sender, EventArgs e) {
          Double a;
          Double b;
    
          // Let's be generous and accept leading/trailing spaces
          if (!Double.TryParse(textbox1.Text.Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out a)) {
            textbox2.Text = "First term is of incorrect format.";
    
            return;
          }
    
          if (!Double.TryParse(textbox2.Text.Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out b)) {
            textbox2.Text = "Second term is of incorrect format.";
    
            return;
          }
    
          textbox2.Text = (a + b).ToString(CultureInfo.InvariantCulture);
        }
    

    【讨论】:

    • 我试过你的答案,但 NumberStyles 和 CultureInfo 给出了“当前上下文中不存在”的错误..
    • @user3222961:不要忘记添加“使用 System.Globalization;”
    • 嗯,好的,我添加了“使用 System.Globalization”,所以现在我的构建成功了。但是 textbox2 现在声明“第二项格式不正确”。当 btnTwo 被点击时..
    • @user3222961:所以 textbox2.Text 中的值不是双精度数。那么 textbox2 中有什么?尝试将 123 放入 textbox2
    • textbox2 中的值是 int 但我尝试了 "double a" 和 "!Double.TryParse";和“int a”和“!Int32.TryParse”,它们都给出了相同的文本..
    【解决方案2】:

    查看以下链接:http://msdn.microsoft.com/en-us/library/system.int32.parse(v=vs.110).aspx

    所以你有几个选择,如果你能保证它总是一个数字(你不能,但如果你只是在试验,那就继续吧)然后使用 Parse。

    所以在代码中,将你的 a 变量更改为 int 然后:

    a = Int32.Parse(textbox1.Text);
    

    ...

    int textbox1Number = Int32.Parse(textbox1.Test);
    textbox2.Text = (a += textbox1Number).toString();
    

    如果您在两个字符串上使用 +=,它会将它们连接起来。你需要 int 来做数学运算。

    看看 tryParse 方法来处理无效的积分条目。

    【讨论】:

      【解决方案3】:

      这样做

      void btnTwo_Click(object sender, EventArgs e)
       {            
           int someInt,someInt2;
           if(int.TryParse(a.Trim(),out someInt) && int.TryParse(textbox2.Text.Trim(),out someInt2))
            textbox2.Text = (someInt + someInt2).ToString();    
       }
      

      【讨论】:

      • 我试过了,但是即使我点击了 btnTwo,textbox2 也是空的。
      • 检查 someInt1 和 someInt2 的值。
      【解决方案4】:

      这样试试

       txt2.Text = (Convert.ToInt32(txt1.Text) + Convert.toInt32(a);
      

      【讨论】:

      • 这永远不会分配。第一次 txt2.Text 将始终为空。
      • 如果不检查是否为空,convert 会抛出异常。
      • 你给的代码返回cannot convert type int to string的错误。
      • 将你的 a 声明为 int @user3222961
      【解决方案5】:

      运算符 + 将连接字符串。所以你必须在添加它们之前将它们转换为 int :

      if(String.IsNullOrEmpty(textbox2.Text)) 
          textbox2.Text = a;
      else if(!String.IsNullOrEmpty(a)) 
          textbox2.Text = Convert.toInt32(textbox2.Text) + Convert.toInt32(a);  
      

      【讨论】:

      • 如果你不检查空,转换将抛出异常。
      【解决方案6】:

      删除:

      string a;
       void textbox1_TextChanged(object sender, EventArgs e)
       {
            a = textbox1.Text;
       }
      

      替换:

       void btnTwo_Click(object sender, EventArgs e)
       {            
            textbox2.Text += a.ToString();    
       }
      

      与:

       void btnTwo_Click(object sender, EventArgs e)
       {            
           textbox2.Text = int.TryParse(textbox2.Text) + int.TryParse(textbox1.Text);    
       }
      

      【讨论】:

      • 你给出的最后一个代码,给出了一个错误“不能隐式地将类型 int 转换为字符串。”
      猜你喜欢
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      相关资源
      最近更新 更多