2016-10-18 1 views
0

ループするたびに新しい行が追加されるループがあります。終了するまでに、クリップボードにStringBuilder.ToString()をコピーしてメモ帳に貼り付けると、点滅するカーソルは、最後の文字列の末尾ではなく、その下の新しい行に残ります。これを防止するにはどうしたらいいですか?また、最後の文字列の最後にカーソルを置き、新しい行にカーソルを置かないでください。文字列のリストを返すStringBuilder +最後にクリップボードにコピーするときのNewLine?

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

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

私もあなたのコードのTBHの問題を再現することができませんでした。 – uTeisT

+0

私の答えをチェックし、あなたが助けてくれたら教えてください。 – mybirthname

+0

https://msdn.microsoft.com/library/cb3sbadh(v=vs.110).aspx *現在のStringBuilderオブジェクトの末尾に、既定の行終端文字を続けて指定した文字列のコピーを追加します。 * –

答えて

0

だけTrim()文字列

は のすべての先頭と末尾の出現現在のStringオブジェクトから指定された文字のセットが が削除された新しい文字列を返します。

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

は、私はあなたがクリップボードにコピーした文字列が改行で終わっていることがわかります。もちろん、この新しい行は貼り付けられているので、カーソルは新しい行にあります。

何とかこの新しい行を削除する必要があります。これを行うための方法は、あなたの正確な仕様に依存します:

文字列がクリップボードにコピーされている場合は、完全な文字列は、これはあなたの仕様であれば、誰もが誰クリップボード

にコピーされますコピーした文字列は、文字列の最後に新しい行で終わります。パターがあなたがコントロールできないプログラムであれば、それについては何もできません。

別の仕様は次のようになります。文字列がクリップボードにコピーされ

場合は、新しい行を終了除くすべての可能なクリップボード

あなたは何を得るでしょう。この道にコピーされますパスタは終端の改行を見ません。しかし、この方法でクリップボード上の文字列は元の文字列ではないことに注意してください。

コード(もちろんこれは単なる小さなステップを示す、最適化することができます)

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); 
関連する問題