2014-01-23 41 views
1

好的这里是我的问题的详细。我创建了textbox1来包含计算,无论何时单击btnOne,txtbox1都会给出结果。第二个名为textbox2的文本框会在每次单击btnTwo按钮时在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();  
} 

回答

0

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

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

所以在代码中,你的一个变量更改为int那么:

a = Int32.Parse(textbox1.Text); 

...

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

如果您使用它连接它们两个字符串+ =。你需要int来做数学。

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

+0

非常感谢你的工作。干杯 – Ceko

0

操作+将连接字符串。所以,你必须将它们转换增加他们之前INT:

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

如果你没有检查空白,convert会抛出异常。 – Naveen

+0

是的,谢谢,我编辑 – Plue

0

尝试这样

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

这将永远不会分配。第一次txt2.Text将永远为空。 – Naveen

+0

@Naveen哦,我犯了错误。现在我更新了 –

+0

如果你没有检查空,convert会抛出异常。 – Naveen

0

删除:

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);  
} 
+0

你给出的最后一个代码给出了一个错误“不能隐式地将int类型转换为字符串”。 – Ceko

+0

@ user3222961我已编辑它....尝试我最后编辑的代码 –

+0

谢谢,但现在它说“方法没有超载”TryParse“需要1个参数”.. – Ceko

0

做这样的

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();  
} 
+0

我试过了,但textbox2是空的,即使我点击btnTwo。 – Ceko

+0

检查someInt1和someInt2的值。 – Ehsan

2

你应该转换文成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); 
    } 
+0

我试过你的答案,但是NumberStyles和CultureInfo给出了“在当前上下文中不存在”的错误。 – Ceko

+0

@ user3222961:不要忘记添加“using System.Globalization;” –

+0

嗯,好吧,我添加了“使用System.Globalization”,所以现在我的构建成功。但textbox2现在声明“第二学期的格式不正确。”当btnTwo被点击时。 – Ceko

相关问题