Pregunta

Tengo un problema al abordar un botón.Tengo muchos botones en mi programa y tengo una función que utiliza cada botón.Obtengo el nombre del último botón en el que se hizo clic con esto:

foreach (Control t in this.Controls)
{
    if (t.Focused)
    {
        ClickedButton = t.Name;
    }

}

Entonces quiero cambiar el texto del botón:

ClickedButton.Text = "Whatever";

Pero no puedo usar ClickedButton como nombre del botón.

¡Gracias de antemano!

¿Fue útil?

Solución

Suponiendo que este es un evento, solo puede hacer algo como este

Button btn = (Button)sender;
btn.Text = "Whatever";

Otros consejos

Si estás escribiendo esto en tu button_click evento,

Puedes obtener el botón como este:

Button BTN = sender as Button;
BTN.Text = "This Button Has Been Clicked!";

Si está haciendo que la llamada en el botón Haga clic en el evento CLICK, debe tener un remitente como un argumento, que puede lanzar a un botón y obtener el nombre del control.

Dado que tiene la referencia del botón, también podría configurar el texto del control.

protected void btnTest_Click(object sender, EventArgs e)
{
    Button b = sender as Button;
    if ((b != null) && (b.Name == "btnTest"))
    {
         b.Text = "yay";
    }
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top