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!

Foi útil?

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
scroll top