2016-10-18 1 views
0

Ich habe eine Schleife, die jedes Mal, wenn sie eine Schleife erstellt, eine neue Zeile anfügt. Wenn es fertig ist und ich die in die Zwischenablage kopiere und sie in Notepad einfüge, bleibt der blinkende Cursor in einer neuen Zeile darunter, anstatt am Ende der letzten Zeichenkette. Wie kann ich verhindern, dass dies geschieht und der Cursor am Ende der letzten Zeichenfolge und nicht darunter in einer neuen Zeile bleibt?StringBuilder Rückgabe der Liste der Zeichenfolgen + eine NewLine am Ende beim Kopieren in die Zwischenablage?

StringBuilder sbItems = new StringBuilder(); 
for (int i = 0; i < 10; i++) 
{ 
    sbItems.AppendLine("Item #" + i.ToString()); 

} 
Clipboard.SetText(sbItems.ToString()); 
+0

ich nicht einmal das Problem mit Ihrem Code TBH reproduzieren konnten. – uTeisT

+0

Überprüfen Sie meine Antwort und sagen Sie mir, ob Sie geholfen haben. – mybirthname

+0

Dies ist wie dokumentiert https://msdn.microsoft.com/library/cb3sbadh(v=vs.110).aspx * Hängt eine Kopie der angegebenen Zeichenfolge gefolgt vom Standard-Zeilenabschlusszeichen an das Ende des aktuellen StringBuilder-Objekts an. * –

Antwort

0

Gerade Trim() die Zeichenfolge

Gibt einen neuen String, in dem alle vorderen und hinteren Vorkommen von eine Reihe von angegebenen Zeichen aus dem aktuellen String-Objekt sind entfernt.

Clipboard.SetText(sbItems.ToString().Trim()); 
1

Ich sehe, dass die Zeichenfolge, die Sie in die Zwischenablage kopieren mit einer neuen Zeile endet. Natürlich wird diese neue Zeile eingefügt und der Cursor befindet sich in der neuen Zeile.

Irgendwie müssen Sie diese neue Linie loswerden. Die Methode, dies zu tun, hängt von Ihren genauen Spezifikationen:

Wenn die Zeichenfolge in die Zwischenablage kopiert wird, wird der gesamte String in die Zwischenablage kopiert wird

Wenn dies Ihre Spezifikation ist, dann jeder, Pasten Ihre kopierte Zeichenfolge endet mit der neuen Zeile am Ende der Zeichenfolge. Wenn der Paster ein Programm ist, das Sie nicht steuern können, können Sie nichts dagegen tun.

könnte eine andere Spezifikation sein:

Wenn die Zeichenfolge in die Zwischenablage kopiert wird, werden alle, aber eine mögliche neue Linie endet in die Zwischenablage kopiert wird

So kann man was bekommen Sie wollen, Passer werden die abschließende neue Zeile nicht sehen. Beachten Sie jedoch, dass die Zeichenfolge in der Zwischenablage nicht die ursprüngliche Zeichenfolge ist.

-Code (natürlich kann diese optimiert werden, nur kleine Schritte zeigt)

StringBuilder sbItems = FillStringBuilder(...); 
// before copying, remove a possible new line character 
// for this we use property System.Environment.NewLine 
var stringToCopyToClipboard = sbItems.ToString(); 
if (stringToCopyToClipboard.EndsWith(Environment.NewLine) 
{ 
    int newLineIndex = stringToCopyToClipboard.LastIndexOf(Environment.NewLine); 
    stringToCopyToClipboard = stringToCopyToClipboard.Substring(0, newLineIndex); 
} 
Clipboard.SetText(stringToCopyToClipboard); 
Verwandte Themen