1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB.NET | Fazer referência a objectos

Discussão em 'Programação' iniciada por diog0silva, 19 de Junho de 2009. (Respostas: 9; Visualizações: 2243)

  1. diog0silva

    diog0silva Power Member

    Boas. Como faço referência a um objecto de um Form?

    Suponhamos que abri um Form desta maneira:

    Dim objForm As New frm_Teste
    objForm.Show()

    Agora, estando num outro form, quero invocar um método dessa classe. Estou a fazer assim:

    frm_Teste.Método()

    Mas não está a resultar. Penso que seja porque tenho que invocar o método para o objecto dessa classe que está aberto, mas não sei como.
     
  2. ribeiro55

    ribeiro55 Power Member

    frm_Teste.Método() apenas se esse método for estático (Shared)

    De outra forma, a menos que faças a instância do form a nível global, como ter Public objForm As New frm_Teste num módulo, não consegues ir buscar o método da mesma instância.
     
  3. iznougud

    iznougud I quit My Job for Folding

    Imagina que queres aceder ao Form principal e que lanças o form2 a partir do from principal


    Código:
    Dim objForm As New frm_Teste(Me) ' passas o apontador para o form principal
    objForm.Show()
    
    
    No form_teste:

    Código:
    private main as Form1
    
    Public Sub New(ByVal frm as Form1)
    
    main = frm
    
    end sub
    
    
    public sub FuncaoQualquer()
    
    main.Metodo() ' Executar o metodo que pertence ao Form1 e que é público
    end sub
    
     
  4. Boas
    Não bastaria colocar o método Metodo() no novo form público?Do tipo Public Sub Metodo() :paranoid:
    Cumps
     
  5. jpaulino

    jpaulino Power Member

    A maneira mais fácil se o frm_Teste estiver aberto.

    My.Forms.frm_Teste.Metodo()
     
  6. jpaulino

    jpaulino Power Member

    Não, tinha de ser Public Shared Sub Metodo() e depois a chamada seria feita utilizando a Classe e depois o método. Qualquer coisa como Form1.Metodo()
     
  7. PNDmartins

    PNDmartins Power Member

    Se estás a abrir um form instanciando-o, significa que para qualquer interacção com esse form
    tem que ser através da instancia que usas-te porque o VB vai criar uma cópia do original, e atribui-la a instancia que usas-te.

    Ou seja, se no form1 acrescentas o metodo .Teste() e depois para abrires o form fazes o

    Código:
    Dim objForm as new frm_Teste
    objForm.Show()
    significa que para acederes ao metodo teste tens que usar o objform.

    Código:
    objForm.Teste()
    
     
  8. diog0silva

    diog0silva Power Member

    Então para poder aceder a esse objecto a partir de outro form, basta declarar a váriavel como Public em vez de Dim, certo?

    Mas já agora, para abrir um Form não posso simplesmente fazer Form.Show() ? É que assim também está a dar.

    Qual a vantagem de declarar um objecto desse form?
     
    Última edição: 20 de Junho de 2009
  9. PNDmartins

    PNDmartins Power Member

    Sim podes.

    O intanciar um form é util em casos onde precisas de ter vários forms iguais, digamos 10, em que cada 1 dos forms apresenta informações diferentes mas o desenho do form é igual.

    Imaginemos que temos um form para apresentar os dados de clientes, mas se quiseres que o programa tenha a possibilidade de estar a ver vários clientes ao mesmo tempo, em vez de fazeres 10 forms iguais, apenas fazes 1 e instancias o form por cada cliente.

    Se não tencionares algo do genero, não vale a pena instanciar forms e basta usar logo o de origem.
     
  10. diog0silva

    diog0silva Power Member

    Ah, então não preciso de instanciar :D

    Obrigadão a todos!
     

Partilhar esta Página