Botão de endereço C# usando uma string
-
11-12-2019 - |
Pergunta
Eu tenho um problema ao endereçar um botão.Tenho muitos botões em meu programa e uma função que é usada por cada botão.Estou recebendo o nome do último botão clicado com isto:
foreach (Control t in this.Controls)
{
if (t.Focused)
{
ClickedButton = t.Name;
}
}
Então quero alterar o texto do botão:
ClickedButton.Text = "Whatever";
Mas não posso usar ClickedButton como nome do botão.
Agradeço antecipadamente!
Solução
Supondo que este seja um evento, você pode fazer algo assim
Button btn = (Button)sender;
btn.Text = "Whatever";
Outras dicas
Se você está escrevendo isso em seu button_click
evento,
Você pode obter o botão assim:
Button BTN = sender as Button;
BTN.Text = "This Button Has Been Clicked!";
Se o botão clicado for chamado para o evento Click, você deverá ter o remetente como argumento, que pode ser convertido em um botão e obter o nome do controle.
Como você tem a referência do botão, também poderá definir o texto do controle.
protected void btnTest_Click(object sender, EventArgs e)
{
Button b = sender as Button;
if ((b != null) && (b.Name == "btnTest"))
{
b.Text = "yay";
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow