将总标记放入文本框中

时间:2014-02-06 06:45:27

标签: c#

我的代码是:

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

我正在尝试将总分数添加到文本框中,但它无法正常工作。可以帮助我吗?

5 个答案:

答案 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的代码。您需要将您拥有的代码放在某个方法中,并在更改txtmathstxtscitxtenglish而非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);
}