Jump to content

"Lista de Contactos" em Visual Basic 2010 Express


jviana
 Share

Recommended Posts

Tenho uma duvida... :wallbash:

Tenho uma "ListView" comos seguntes espaços:

Nome|Idade|Título|Telemóvel

Um botão em baixo que quando carregado abre uma janela novo com o seguintes "Labels" com "textboxs" à frente:

Nome   

Idade

Título

Telemóvel

E depois um botão a dizer "Registar" que quando carregado regressa à janela anterior.

Agora vem aí o problema...  ?

Eu queria que na outra janela com o formulário quando clicasse em registar adicionava os dados à "ListView2 da outra janela.

Alguém me ajuda!

Por Favor!

Learning

  • VB.Net
  • HTML
  • C/C++

Link to comment
Share on other sites

Como??

Vou mostrar o Código:

Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub ToolStripLabel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Hide()
        Form3.Show()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
        form4.show()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    End Sub

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged

    End Sub
End Class

E depois da outra página:

Public Class Form4

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Hide()
        Form2.Show()
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

    End Sub

    Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged

    End Sub

    Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged

    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub

    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

    End Sub

    Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

    End Sub

    Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click

    End Sub
End Class

Learning

  • VB.Net
  • HTML
  • C/C++

Link to comment
Share on other sites

Pelo que percebi do codigo que mostras-te ele fecha os forms, quando passa de um para o outro por isso, basta teres o codigo de carregar a listview no form_load do form onde tens a list.

Neste codigo não esta aqui nada para carregar a listview. É esse o teu problema, não sabes como carregar a listview?

Link to comment
Share on other sites

Não sei como se passa de uma para a outra!

O que não falta por aqui é soluções para passar dados entre forms!

Se em vez de .Show() usares o .ShowDialog(), a nova form é aberta de forma a que a anterior congele.

A vantagem disto é que ela congela porque está à espera que a nova form seja fechada e quando isso acontecer, continua o fluxo.

Podes jogar com isto a teu favor de várias maneiras.

Uma delas pode passar por algo tão simples como teres uma propriedade no segundo form (cuja devolução é internamente afectada) que vais apanhar depois do .ShowDialog()

Precisas de um exemplo?

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

O que não falta por aqui é soluções para passar dados entre forms!

Se em vez de .Show() usares o .ShowDialog(), a nova form é aberta de forma a que a anterior congele.

A vantagem disto é que ela congela porque está à espera que a nova form seja fechada e quando isso acontecer, continua o fluxo.

Podes jogar com isto a teu favor de várias maneiras.

Uma delas pode passar por algo tão simples como teres uma propriedade no segundo form (cuja devolução é internamente afectada) que vais apanhar depois do .ShowDialog()

Precisas de um exemplo?

Creio que o problema dele não é esse. Sei também que não se explicou da melhor forma, mas pelo que percebi ele quer passar dados de um Form para o outro.

Tens então duas opções pelo menos: Ou passas a informação para variáveis globais ou passas a informação através de parâmetros como por exemplo:

Vamos passar os valores do Form1 para o Form2:

Form1 - Button1;

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Portanto, as Labels do Form2, vão receber os valores que tens nas labels do Form1.
Form2.Label1.Text = Label1.Text
Form2.Label2.Text = Label2.Text
Form2.Show()
End Sub

No entanto, um reparo ao teu código: Não deves utilizar o Me.Hide(), isto porque fica a consumir-te recursos no background. Utiliza o Me.Close().

Link to comment
Share on other sites

Eu sei .

🙂 Mas eu não quero para informações de Labels para Labels.

Quero Passar imformações de Textboxs para Listview  :wallbash:

Quero  fazer tupo uma add-in ( base de dados), se for preciso vou para Microsoft Acess!  😁

Adeus 🙂

Learning

  • VB.Net
  • HTML
  • C/C++

Link to comment
Share on other sites

E qual é a dúvida?

É a única pessoa que está a despender de tempo e ainda respondes dessa maneira?

Tem lá calma 🙂

O bioshock não anda cá para te enganar nem a ti nem a ninguém. Se te está a dar uma dica, tenho a certeza de que não é infundada.

Vamos lá por passos, lembrei-me agora de uma forma ainda melhor para passares dados. Vamos dar uso aos eventos que andam enferrujados por tantas vezes nos esquecermos que eles existem.

Esse formulário de inserção serve única e exclusivamente para inserir dados, certo?

Sendo assim não há perigo de termos uma instância viva do gajo.

Mas não vamos por aí. Vamos instanciar o form quando necessário, adicionando o handler necessário e depois do form morrer, removemos o handler.

No teu form onde tens a ListView, no botão que chama o form para preencher dados (o tal que tem as caixas de texto (vou assumir 3 campos e form2 como nome)) adiciona a seguinte lógica, ao invés do teu form2.show e não precisas de esconder o form da listview também. É mais giro ver os dados a chegar:

        Dim F2 As New Form2
        AddHandler F2.MandarDados, AddressOf ChegaramDados
        F2.ShowDialog()
        RemoveHandler F2.MandarDados, AddressOf ChegaramDados
        F2.Dispose()

De seguida acrescentas o seguinte sub, no formulário da ListView, para lidar com o disparo do evento:

    Private Sub ChegaramDados(ByVal Tx1 As String, ByVal Tx2 As String, ByVal Tx3 As String)
        Dim LVI As New ListViewItem
        LVI.Text = Tx1
        LVI.SubItems.Add(Tx2)
        LVI.SubItems.Add(Tx3)
        ListView1.Items.Add(LVI)
        'atenção que só vês subitems se a View da ListView estiver em Details
        'e adicionas aqui a lógica de armazenamento que bem te apetecer
    End Sub

No formulário com os campos para inserir, acrescentas a seguinte linha fora de qualquer sub, pode ser logo a seguir ao Public Class:

Public Event MandarDados(ByVal Tx1 As String, ByVal Tx2 As String, ByVal Tx3 As String)

E depois num botão que tenhas no form2 que indique que seja para "Adicionar dados" ou coisa do género:

RaiseEvent MandarDados(TextBox1.Text, TextBox2.Text, TextBox3.Text)

Onde TextBox1, 2 e 3 são os nomes das caixas de introdução.

E pronto. Agora experimenta.

Basicamente estamos a meter um evento à escuta. Quando do form2 é disparado, alerta o handler do form1, que por sua vez delega a tarefa ao sub indicado.

EDIT: Toma lá também um screenshot, não vá o diabo tecê-las. E o ser VS2010 não é desculpa.

Este código funcionaria até no VS2005.

🙂

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Querias dados a passar de textboxes de um form para uma listview no outro, e aí tens.

Onde meti o comentário 'e adicionas aqui a lógica de armazenamento que bem te apetecer é onde acrescentas a lógica de armazenamento, onde escreves para uma base de dados ou onde bem quiseres.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Um post perfeitamente desnecessário, quer tenhas 12 ou 81.

Com a tua idade nem Internet tinha, quando mais youtube.

Explica lá melhor o que queres "deletar".

Não estamos cá para te fazer o programa, mas estamos cá para ajudar com certeza.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.