Format des Clipboard-Inhaltes ändern

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von praetor.

    @praetor So gehts:

    VB.NET-Quellcode

    1. Dim txt = Clipboard.GetText(TextDataFormat.Text)
    2. Me.RichTextBox1.Text = txt.Replace("¬", "")
    Da werden die weichen Trennzeichen durch nichts ersetzt und sind verschwunden.
    =>
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    So gehts:

    Leider irgendwie doch nicht. Ich habe deine letzten Vorschläger - Danke dafür! - in der Anlage erörtert.

    Nochmal, es geht NICHT um die Entfernung regulärer bedingter Trennstriche, sondern um die Vermeidung von Trennstrichen, die irgendwie auf dem Weg durch die Zwischenanlage entstehen. Und das Ganze, OHNE ein Control.

    Was wirklich merkwürdig ist, dass die überflüssigen neuen Trennstriche bei dir nicht zu entstehen scheinen. Ich kann den Effekt reproduzieren unter Word 2010 und Word 2016 bzw. Office 365 ProPlus.
    Dateien
    Grüße
    praetor
    @praetor Wie willst Du denn diese beiden Sorten unterscheiden?
    Ich habe nicht den "Trennstrich" (Minus) ersetzt, sondern den "weichen Trennstrich", der bei der Silbentrennung eingefügt wird.
    Du kannst ja mal spaßeshalber zählen, wie viele davon noch da sind und dann überprüfen, ob die vorher schon drinne waren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:


    Wie willst Du denn diese beiden Sorten unterscheiden?

    Gar nicht, denn das geht nicht, weil sie indentisch kodiert sind. Die ungewollten dürfen gar nicht erste entsehen. Der Code im meinem Startpost leistet das, warum auch immer. Aber das Entstehen der zusätzlichen Trennstriche ist ja auch mysteriös.

    Ich habe nicht denTrennstrich ersetzt, sondern den weichen Trennstrich, der bei der Silbentrennung eingefügt wird.

    Das ist schon klar. Aber die sind gar nicht das Problem. Ich glaube, wir kommen nicht mehr weiter ... :S
    Grüße
    praetor
    Auf die Gefahr hin völligen Blödsinn zu verzapfen.. ohne die RichTextBox wirst Du nicht auskommen, aber brauchst Du sie auf einem UserForm?
    Reicht es nicht, sie nur per Code zu generieren?

    VB.NET-Quellcode

    1. If My.Computer.Clipboard.ContainsText Then
    2. Dim RTB1 = New System.Windows.Forms.RichTextBox()
    3. RTB1.Rtf = CType(Clipboard.GetData(DataFormats.Rtf), String)
    4. Clipboard.SetData(DataFormats.Text, RTB1.Text)
    5. End If
    Jetzt hab ich es, glaub ich. Hab die Idee von @Dksksm (Control nicht anzeigen) und den Vorschlag von @RodFromGermany (auch bedingte Trennstriche eliminieren, allerdings jetzt im RTF-Rohformat) kombiniert:

    VB.NET-Quellcode

    1. Private Sub Deletehyphen()
    2. ' verhindert irrelevante Trennstrich, löscht bedingte Trennstriche
    3. If My.Computer.Clipboard.ContainsData(DataFormats.Rtf) Then ' nur bei RTF-Text im Clipboard
    4. Dim RTBox = New System.Windows.Forms.RichTextBox() ' Control ist erforderlich, Anzeige nicht
    5. RTBox.Rtf = Clipboard.GetData(DataFormats.Rtf)
    6. RTBox.Rtf = RTBox.Rtf.Replace("\-", "") ' bedingte Trennstriche aus RTF entfernen
    7. Clipboard.SetData(DataFormats.Text, RTBox.Text)
    8. End If
    9. End Sub

    Danke Euch!

    Grüße
    praetor
    Grüße
    praetor