2011-09-19 89 views
1

我開始在.Net和C#中編程,目前我卡住了。我有一個非常類似的問題,在這個問題上發佈在計算器:C#: Multiline TextBox with TextBox.WordWrap Displaying Long Base64 StringMultiline TextBox with custom word wrapping

對這個問題的回答是的代碼塊:

public IEnumerable<string> SimpleWrap(string line, int length) 
{ 
    var s = line; 
    while (s.Length > length) 
    { 
    var result = s.Substring(0, length); 
    s = s.Substring(length); 
    yield return result; 
    } 
    yield return s; 
} 

我不知道如何利用這段代碼的。 CAn有人請給我一個代碼片段,它使用這種特定的方法來寫入文本,並自動插入一個新的行。 我的代碼目前看起來是這樣的:

var length = GetMaximumCharacters(txtBxResults); 
var txtWrap = SimpleWrap(stringValue, length); 
foreach (string s in txtWrap) 
{ 
    txtBxResults.AppendText(s); 
} 

如果我使用AppendText通過方法,簡單寫入所有在一個單一的線,我不想要的文本。 任何答覆將不勝感激。

感謝, KK

+0

如何使用文本框?我的意思是...你是編程式地一次填充它還是附加文本?還是讓用戶輸入? – PedroC88

+0

@ PedroC88以編程方式填充文本框。它填充化合物與化合物中的每種元素的組合,化合物用連字符分隔,每個化合物用逗號分隔(Fe-Cr-Ni,Al-Ni-Co)。我想要的是文本框應該在有逗號而不是連字符的行末尾插入一個新行。另外我不需要在新行中添加每個化合物,只有當文本框的同一行中沒有剩餘空間時纔會開始新行。希望我已經清楚地解釋了自己。感謝您的建議 – K3wm

回答

1

你幾乎有它的權利,你只需要插入換行符也是如此。嘗試

foreach (string s in txtWrap) 
{ 
    txtBxResults.AppendText(s + Environment.NewLine); 
} 
+0

感謝您的回覆。如果我按照你的建議做,那麼在每次foreach迭代後,都會有一條我不想要的新線。我只想要文本框插入一個新的行,當單詞不能再適合在文本框中。理想情況下,默認的wordwrap功能很好,但由於我的單詞還包含' - '(連字符),因此文本框wordwrap在連字符處打破了我不熟悉的單詞。這就是爲什麼我使用的代碼塊被建議與我的類似問題。 – K3wm

0

好吧,我不能給你確切的代碼現在(我會回來後再發布),但在一般情況下,你應該做的是找出下一個逗號的指數,如果當前行上的字符+該索引>該行的長度,然後在該化合物之前追加一個新行。如果你這樣做的話,當它完成時,它應該正確格式化,也考慮到最後一個化合物在末尾沒有(我認爲)逗號。