vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · ListBox & ComboBox   |   VB-Versionen: VB2005, VB200804.06.09
Inhalt einer ListBox in die Zwischenablage kopieren

Zwei Funktionen, mit denen sich der Inhalt einer ListBox in die Zwischenablage kopieren bzw. aus der Zwischenablage wieder einfügen lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  25.580 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgend zwei Funktionen, mit denen sich der Inhalt einer ListBox in die Zwischenablage kopieren bzw. aus der Zwischenablage wieder einfügen lässt.

''' <summary>
''' Kopiert den Inhalt einer ListBox in die Zwischenablage
''' </summary>
''' <param name="ListBox">ListBox-Control</param>
''' <param name="OnlySelectedItems">True, wenn nur die selektierten 
''' Einträge kopiert werden sollen</param>
Public Sub ListBoxCopyToClipboard(ByVal ListBox As ListBox, _
  ByVal OnlySelectedItems As Boolean)
 
  If OnlySelectedItems Then
    ' nur die selektierten Einträge kopieren
    Dim items As New System.Text.StringBuilder
 
    ' alle selektierten Einträge durchlaufen
    For Each Item As String In ListBox.SelectedItems
      items.AppendLine(Item)
    Next
 
    If items.Length > 0 Then
      ' Ergebnis in die Zwischenablage kopieren
      My.Computer.Clipboard.SetText(items.ToString)
    End If
  Else
    ' alle Einträge kopieren
    ListBoxCopyToClipboard(ListBox)
  End If
End Sub
''' <summary>
''' Kopiert den Inhalt einer ListBox in die Zwischenablage
''' </summary>
''' <param name="ListBox">ListBox-Control</param>
Public Sub ListBoxCopyToClipboard(ByVal ListBox As ListBox)
  Dim items As New System.Text.StringBuilder
 
  ' alle Einträge durchlaufen
  For Each Item As String In ListBox.Items
    items.AppendLine(Item)
  Next
 
  If items.Length > 0 Then
    ' Ergebnis in die Zwischenablage kopieren
    My.Computer.Clipboard.SetText(items.ToString)
  End If
End Sub
''' <summary>
''' Fügt den Inhalt der Zwischenablage in eine ListBox ein.
''' </summary>
''' <param name="ListBox">ListBox-Control</param>
Public Function ListBoxCopyFromClipboard(ByVal ListBox As ListBox) As Boolean
  ' Enthält die Zwischenablage Text?
  If My.Computer.Clipboard.ContainsText(TextDataFormat.Text) Then
    ' Text aus der Zwischenablage holen
    Dim items As String = My.Computer.Clipboard.GetText(TextDataFormat.Text)
 
    ' abschließende Zeilenumbrüche entfernen
    items = items.TrimEnd(ControlChars.NewLine.ToCharArray)
 
    ' Inhalt der ListBox hinzufügen
    ListBox.Items.AddRange(items.Split(ControlChars.NewLine))
 
    Return True
  Else
    Return False
  End If
End Function

Aufrufbeispiel:

' alle selektierten Einträge in die Zwischenablage kopieren
ListBoxCopyToClipboard(ListBox1, True)
' gesamten Inhalt (alle Einträge) kopieren
ListBoxCopyToClipboard(ListBox1)
' Inhalt der Zwischenablage einfügen
ListBoxCopyFromClipboard(ListBox2)