Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 04.06.09 |
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)