Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

malainhocf

Passar variável entre forms

Mensagens Recomendadas

malainhocf

Olá, bom dia,

Tenho um formulário chamado frmFamilias

Esse formulário chama outro formulário(frmAltFamilia) através de um botão.

Nesse botão é criada uma variável chamada varid

Como posso no frmAltFamilia chamar a variável que foi definida no botão do formulario frmFamilias.

Como posso fazer isso ?

Será que me fiz compreender o meu problema ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Estive a ler o artigo mas para o meu caso não dá para usar

Eu tenho o seguinte código

...

Private Sub btnAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlterar.Click

        Dim varid As Integer = CInt(DataGridView1.Rows(0).Cells(0).Value.ToString())

        frmAltFamilia.Show()

    End Sub

...

Como devo fazer ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Sim, é isso que eu pretendo

Para começar, para testar vou meter isso num msgbox() para ver se está a ter os valores correctos.

Mas é isso que eu pretendo.

Como faço ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

O problema é que eu chamo a form assim

frmAltFamilia.show()

Em vez de fazer:

Dim form as New frmAltFamilia

form.show()

Eu já tive problemas com essa forma de chamar o formulário

Eu queria chamar assim

frmAltFamilia.show()

E como passo a variável para o frmAltFamilia

Eu li bem o teu artigo, Só estou é a ter problemas com essas formas de chamar o formulário.

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Eu já tive problemas com essa forma de chamar o formulário

Eu programo em .NET desde a versão 2002 (à uns 6/7 anos não sei bem) e nunca tive um problema. Deves é ter feito algo errado.

Faz desta forma que é o correcto:

Dim frm as New frmAltFamilia

frm.PropriedadeCriadanoFormdeDestino = "abc"

frm.show()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

O que eu pretendo é precisamente o contrário

Preciso de passar a variável da form inicial para a form secundaria

Este código que me dizes é ao contrário do que eu pretendo

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

No form de destino, ou seja, onde vais ler depois a variável declaras uma propriedade:

    Private _myString As String

    Public Property myString() As String 
        Set(ByVal value As String) 
            _myString = value 
        End Set 
        Get 
            Return _myString 
        End Get 
    End Property

Podes ver o resultado fazendo:

MessageBox.Show(Me.myString)

No form onde vais criar uma nova instância e que queres passar a informação, fazer:

        Dim frm As New frmChild
        frm.myString = "abc"
        frm.Show()    

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pwyll

Apenas uma outra forma de abordar a questão que vai servir para o efeito no entanto não está tão correcta como a do JPaulino, essa sim está 100% correcta.

No frmFamilias

Public Class frmFamilias

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim varid As Integer = CInt(DataGridView1.Rows(0).Cells(0).Value.ToString())

        Dim frmAltFamilia As New frmAltFamilia
        frmAltFamilia.Init(varid)
    End Sub
End Class

No frmAltFamilia:

Public Class frmAltFamilia
    Private mStr As String

    Public Sub Init(ByVal pStr As String)
        mStr = pStr
        Me.Show()
    End Sub
End Class

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Olá, bom dia,

Muito obrigado pela vossa ajuda

Consegui fazer

Mas JPaulino é tão complicado fazer a passagem de dados de um formulário para o outro ?

Mas o que importa é que está a funcionar.

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Mas JPaulino é tão complicado fazer a passagem de dados de um formulário para o outro ?

Mas o que importa é que está a funcionar.

Parece-te complicado porque não estás habituado, mas eu acho relativamente simples.

Mas se for para escrever numa textbox (por exemplo), é mais simples ... podes fazer:

Dim frmAltFamilia As New frmAltFamilia

frmAltFamilia.TextBox1.Text = "abc"

frmAltFamilia.Show()

PS: O código que mostrei é o que está no meu blog ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Pois, eu sei, mas eu estava com receio ao uso de

Dim form as frmAltFamilia

form.show()

Tivo problemas como te disse antes

Não conseguia fazer referencia a form que era chamada com isso.

quando pus

frmAltFamilia.show()

Ai já funcionou tudo bem.


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.