none
Pegando Nome do button RRS feed

  • Pergunta

  • Eu gostaria de saber se é possivel pegar o nome de button atravez de uma funcao, tipo esse exemplo:

    'cria um nomo button

    Dim end as string

     Dim dotnsBF = New Button()
                dotnsBF.Location = New Point(38, 38)
                dotnsBF.BackColor = Color.AliceBlue
                dotnsBF.Enabled = True
                dotnsBF.Text = "FEHD"
                dotnsBF.Name = end + "FEHD"
                dotnsBF.Width = 50
                dotnsBF.Height = 50

    'chama funçao carregar

               AddHandler downsBF.Click, AddressOf carregar

    Private Sub carregar(sender As Object, e As EventArgs)
          'Aqui ficaria o codigo de como pegar o nome do button que o chamou, como teria varios buttons e eles teriam que executar funcçoes semelhantes colocar varias Subs para cada um  seria ruim, entao gostaria de saber se é possivel e se sim como?.
        End Sub

    obrigado pelas respostas...

    quarta-feira, 5 de fevereiro de 2014 01:48

Respostas

  • Veja se te ajuda :

    'funcao carregar
    Private Sub carregar(sender As Object,e As EventArgs)
    
    Dim btn As Button = CType(sender, Button)
    
    Dim nome As String
    nome = btn.Name
    
    End Sub

    • Marcado como Resposta TheKr4tosD quarta-feira, 5 de fevereiro de 2014 21:31
    quarta-feira, 5 de fevereiro de 2014 09:54

Todas as Respostas

  • Veja se te ajuda :

    'funcao carregar
    Private Sub carregar(sender As Object,e As EventArgs)
    
    Dim btn As Button = CType(sender, Button)
    
    Dim nome As String
    nome = btn.Name
    
    End Sub

    • Marcado como Resposta TheKr4tosD quarta-feira, 5 de fevereiro de 2014 21:31
    quarta-feira, 5 de fevereiro de 2014 09:54
  • Veja se te ajuda :

    'funcao carregar
    Private Sub carregar(sender As Object,e As EventArgs)
    
    Dim btn As Button = CType(sender, Button)
    
    Dim nome As String
    nome = btn.Name
    
    End Sub

    Kr4TosD, veja a resposta do Daniel - que foi ótima - o evento click já tem 2 argumentos, um deles é o "sender"". Sender é o objeto que disparou o evento, então você não precisará nem localizá-lo, o sender já é a referência ao botão que você quer.

    Agora eu tenho uma preocupação - a função que você mostrou para criar o botão não define nenhum Form como Parent. Assim sendo, se apenas esta porção do código for a sua função, esse botão nunca vai aparecer em lugar nenhum para ser clicado. No "New Button()" faça também associação ao Parent (dotnsBF.Parent = [um Form - pode ser Me se a função estiver dentro do form já - ou um Panel) para que o botão apareça dentro desse Form/Panel na posição que você designou.

    Outra coisa é adicionar ele no "controls" do Form/Panel - veja que todos os Forms que o visual studio cria, na inicialização dele ele da New em todos os componentes e os adiciona variável "controls" do Form (o Panel tem uma também, se você for colocar em um Panel, use a dele, não a do Form).

    Isso possibilita que, quando o Form for destruído, o GC (Garbage Collector) levante o procedimento "Dispose" de todos os controles na variável Controls.

    quarta-feira, 5 de fevereiro de 2014 10:21
  • Daniel, Obrigado pela resposta, era exatamente isso que queria, entao foi perfeito!

    SammuelMiranda, esta é so uma porçao do codigo, como isso é criado em uma GroupBox eu apenas utilizo isso (Named2.Controls.Add(dotnsBF)) para inseri-la na group box, mas obrigado pela sua explicaçao sobre Sender, e sua preocupação......

    Obrigado pelas respostas...^^

    quarta-feira, 5 de fevereiro de 2014 21:36