我的代码是:
protected void txttotal_TextChanged(object sender, EventArgs e)
{
int a = Convert.ToInt32(txtmaths.Text);
int b = Convert.ToInt32(txtsci.Text);
int c = Convert.ToInt32(txtenglish.Text);
int tot = a + b + c;
txttotal.Text = Convert.ToString(tot);
}
我正在尝试将总分数添加到文本框中,但它无法正常工作。可以帮助我吗?
答案 0 :(得分:4)
您正在尝试更改文本正在更改的同一文本框中的文本,您确定这是您要执行的操作吗?
当数学,科幻和英语值发生变化时,您不想更改总计吗?如果是这样,请看以下内容。
protected void txtmaths_TextChanged(object sender, EventArgs e)
{
UpdateTotals();
}
protected void txtsci_TextChanged(object sender, EventArgs e)
{
UpdateTotals();
}
protected void txtenglish_TextChanged(object sender, EventArgs e)
{
UpdateTotals();
}
protected void UpdateTotals()
{
int a = Convert.ToInt32(txtmaths.Text);
int b = Convert.ToInt32(txtsci.Text);
int c = Convert.ToInt32(txtenglish.Text);
int tot = a + b + c;
txttotal.Text = tot.ToString();
}
答案 1 :(得分:1)
看起来这个方法是TextChanged
txttotal
事件的偶数处理程序。我在猜测"没有工作" here:如果将处理程序中的控件更改为其changed-event,则可能会遇到循环。
您可能想要检查是否因为处理程序已完成更改而触及处理程序。
答案 2 :(得分:1)
问题:代码没有问题,但看起来您在整个文本框TextChanged
事件处理程序中编写代码,因此谁将提升总文本框TextChanged
事件
解决方案:所以你需要像Sumbit这样的按钮,你需要将上面的代码移动到提交按钮点击事件处理程序,如下所示:
protected void btnSubmit_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(txtmaths.Text);
int b = Convert.ToInt32(txtsci.Text);
int c = Convert.ToInt32(txtenglish.Text);
int tot = a + b + c;
txttotal.Text = Convert.ToString(tot);
}
答案 3 :(得分:0)
您需要在txtTotal
事件中更新txtTotal_TextChanged
的代码。您需要将您拥有的代码放在某个方法中,并在更改txtmaths
,txtsci
,txtenglish
而非txttotal_TextChanged
protected void UpdateTotal()
{
txttotal.Text = Convert.ToInt32(txtmaths.Text) + Convert.ToInt32(txtsci.Text) + Convert.ToInt32(txtenglish.Text);
}
protected void txtmaths_TextChanged(object sender, EventArgs e)
{
UpdateTotal();
}
答案 4 :(得分:0)
由于类型异常,我可以看到这种错误。
这是一种更安全的方法,可以减少潜在的错误:
protected void txttotal_TextChanged(object sender, EventArgs e)
{
int a = 0;
int b = 0;
int c = 0;
if (!Int32.TryParse(txtmaths.Text, ref a))
// handle error...
if (!Int32.TryParse(txtsci.Text, ref b))
// handle error...
if (!Int32.TryParse(txtenglish.Text, ref c))
// handle error...
int tot = a + b + c;
txttotal.Text = Convert.ToString(tot);
}