Jump to content
Lukas S.

[Duvida-Resolvida] Como copiar multiplos items de uma listbox

Recommended Posts

Lukas S.

TOPICO RESOLVIDO

O user Andrepereira9 encontrou a solução

Boas

Como são vários items, tens de percorre-los 1 a 1. Não consegues copiar uma colecção só de uma vez.

If ListBox1.SelectedItems.Count > 0 Then
     Dim copiar As String = String.Empty

     For Each item In ListBox1.SelectedItems
          copiar &= item.ToString + vbNewLine
     Next

     My.Computer.Clipboard.SetText(copiar)
End If

O Problema

Tenho uma lista mas não consigo copiar porque dá este tipo de erro

System.Windows.Forms.ListBox+SelectedObjectCollection

Tou com o seguinte código:

    Private Sub CopiarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopiarToolStripMenuItem.Click
        If ListBox1.SelectedItems.Count > 0 Then
            Dim copiar As String
            copiar = ListBox1.SelectedItems.ToString
            My.Computer.Clipboard.SetText(copiar)
        End If
    End Sub

Ao colocar este código não dá erro e nenhum mas quando vou a colar ele só cola System.Windows.Forms.ListBox+SelectedObjectCollection


E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Share this post


Link to post
Share on other sites
bsccara

Presumo que queiras copiar a linha seleccionada na Listbox. Para isso usas a propriedade SelectedItem (singular). A SelectedItems (plural) dá-te uma colecção com todas as linhas seleccionadas, o que não pode ser convertido numa string.

Share this post


Link to post
Share on other sites
Lukas S.

O melhor que consegui foi isto que copia só um item

        If ListBox1.SelectedItems.Count > 0 Then
            Dim listbx As Object
            Dim copiar As Object
            Dim itemsexistentes As Object
            itemsexistentes = ListBox1.SelectedItems.Count
            listbx = ListBox1.SelectedItem
            copiar = ListBox1.Text.ToString
            For Each itemsexistentes In listbx
                My.Computer.Clipboard.SetText(copiar)
            Next
        End If

Outro método que usei e nada

        Dim i As Integer = 0
        For i = 0 To ListBox1.SelectedItems.Count - 1
            My.Computer.Clipboard.SetText(ListBox1.SelectedItems.Item(i).ToString() & " ")

        Next
    End Sub


E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Share this post


Link to post
Share on other sites
Lukas S.

Presumo que queiras copiar a linha seleccionada na Listbox. Para isso usas a propriedade SelectedItem (singular). A SelectedItems (plural) dá-te uma colecção com todas as linhas seleccionadas, o que não pode ser convertido numa string.

só pra esclarecer -te

Error 1 Value of type 'System.Windows.Forms.ListBox.SelectedObjectCollection' cannot be converted to 'String'. D:\Visual Basic\Source\Regex - Para Ficheiros Locais\WindowsApplication1\WindowsApplication1\Form1.vb 56 22 WindowsApplication1


E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Como são vários items, tens de percorre-los 1 a 1. Não consegues copiar uma colecção só de uma vez.

If ListBox1.SelectedItems.Count > 0 Then
     Dim copiar As String = String.Empty

     For Each item In ListBox1.SelectedItems
          copiar &= item.ToString + vbNewLine
     Next

     My.Computer.Clipboard.SetText(copiar)
End If


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Andrepereira9

TOPICO RESOLVIDO Bem descobri na internet como fazer .. Fica aqui a solução para quem um dia poder vir a necessitar lembrando que necessita-se de fazer imports do System.Text

Private Sub CopiarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopiarToolStripMenuItem.Click
        Dim lb As Object
        Dim buffer As New StringBuilder
        lb = ListBox1
        For i As Integer = 0 To lb.Items.Count - 1
            buffer.Append(lb.Items(i).ToString)
            buffer.Append(vbCrLf)
        Next

        My.Computer.Clipboard.SetText(buffer.ToString)
    End Sub

Em vez de utilizares o .Append(valor) e depois .Append(vbCrLf) para passar para a linha de baixo, podes utilizar o .AppendLine(valor), que ele mete cada valor numa linha nova

P.S. Não alteres as mensagens anteriores como fizeste na 1º para pores a solução.

Cria uma nova mensagem. Assim o tópico fica mais organizado


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Lukas S.

Em vez de utilizares o .Append(valor) e depois .Append(vbCrLf) para passar para a linha de baixo, podes utilizar o .AppendLine(valor), que ele mete cada valor numa linha nova

P.S. Não alteres as mensagens anteriores como fizeste na 1º para pores a solução.

Cria uma nova mensagem. Assim o tópico fica mais organizado

Andre desculpa lá mas a tua solução foi a melhor por isso vou pôr no inicio do topico se nao te importares


E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Share this post


Link to post
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

×
×
  • 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.