Quiero tener la capacidad de agregar campos numéricos usando un evento, ya que tengo más de 50. No me apetece agregar eventos a cada uno, ¿hay una mejor manera de hacer lo siguiente? Además, parece que no puedo hacer que el compilador reconozca sumEarnings, si alguien tiene alguna sugerencia.

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;
    }
1
rogue39nin 24 jul. 2016 a las 22:32

2 respuestas

La mejor respuesta

SumEarnings es un método sin tipo de retorno, cámbielo como

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

Para adjuntarlo a varios controles desde el código, puede usar enumerator. Por ejemplo:

foreach (Control c in this.Controls)
{
    //if (c is TextBox) 
    c.ValueChanged += sumEarnings();
}
0
user2316116 24 jul. 2016 a las 19:56

Debe eliminar el () de la asignación del controlador de eventos:

wagesnET.ValueChanged += sumEarnings;

Después de calcular el nuevo valor total, actualice el control apropiado:

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

No es posible tener un controlador de eventos que devuelva un valor al mismo tiempo.

0
t3chb0t 24 jul. 2016 a las 20:30