Botón de dirección de C# usando una cadena
-
11-12-2019 - |
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!
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";
}
}