我应该如何将事件附加到值更改

时间:2016-07-24 19:32:31

标签: c# asp.net webforms

我希望能够使用一个事件来添加数字字段,因为我有超过50个我不喜欢为每个事件添加事件是否有更好的方法来执行以下操作。此外,我似乎无法通过编译器重新调整sumEarnings,任何人都有任何建议。

protected void Page_Load(object sender, EventArgs e)
    {


        wagesnET.ValueChanged += sumEarnings();
    }


    protected void btnSave_Click(object sender, EventArgs e)
    {
        StringDictionary KeyValue = new StringDictionary();

        KeyValue.Add("", "");


        foreach (string key in Request.Form)
        {
            if (!key.StartsWith("checkbox")) continue;


        }


    }

    private void  sumEarnings(object sender, EventArgs e)
    {

        int total = Convert.ToInt16(wagesnET.Text) + Convert.ToInt16(partnerearningscic.Text);
        return total;
    }

2 个答案:

答案 0 :(得分:0)

sumEarnings是一种没有返回类型的方法,将其更改为

private int sumEarnings()
{
    return Convert.ToInt16(wagesnET.Text) + Convert.ToInt16(partnerearningscic.Text);
}

要将其附加到代码中的多个控件,您可以使用枚举器。例如:

foreach (Control c in this.Controls)
{
    //if (c is TextBox) 
    c.ValueChanged += sumEarnings();
}

答案 1 :(得分:0)

您需要从事件处理程序分配中删除()

wagesnET.ValueChanged += sumEarnings;

计算新的总值后,请使用相应的控件:

private void sumEarnings(object sender, EventArgs e)
{
    int total = Convert.ToInt16(wagesnET.Text) + Convert.ToInt16(partnerearningscic.Text);  
    // todo: update the total value...
}

不可能有一个同时返回值的事件处理程序。