Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 04.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 Otter | Bewertung: | Views: 25.653 |
www.tools4vb.de | System: 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)