如果你想使用空間對齊,你需要使用等寬字體(如快遞,或索拉),否則,你可以使用標籤:號碼也不會一致,雖然這種方式,並且由於例程中的數字可能會變得相當大,所以最終可能會導致您的數字超出製表符分隔範圍,並且如果發生這種情況,將會在對齊方式中產生不一致。
作爲一般規則,如果要對齊任何類型的文本框,請使用等寬字體。
可以用空格填充,例如,使用String.PadLeft
或String.PadRight
。
這將是一樣簡單改變:
richTextBox1.Text += Convert.ToString(i * j) + " ";
隨着
richTextBox1.Text += Convert.ToString(i * j).PadLeft(5);
然而這將假設所有數字在寬度最大5個字符。
爲了您的日常精確,你可以儘管計算的最大寬度,所以你最終的東西,如:
// convert your input only once
int myNumber = Convert.ToInt32(textBox1.Text);
// pad with the maximum possible length, plus one space
int padAmount = (myNumber * myNumber).ToString().Length + 1;
for (int i = 1; i <= myNumber; i++)
{
for (int j = 1; j <= myNumber; j++)
{
// pad your input by the amount of spaces needed to fit all possible numbers
richTextBox1.Text += (i*j).ToString().PadLeft(padAmount);
}
}
// use Environment.NewLine instead of `\n`
richTextBox1.Text += Environment.NewLine;
這裏有一個fiddle。這是(爲顯而易見的原因)控制檯,所以在我的小提琴輸入號碼是固定的(它在myNumber
)和輸出只是一個字符串(而不是richTextBox1.Text
),但它應該顯示它如何工作。
雖然我做了一些改變(我只轉換輸入的號碼一次,並使用Environment.NewLine
代替\n
),這是很不理想,雖然,你應該建立你的字符串(使用StringBuilder
),並在其分配一次,而不是添加到Text
屬性。我已經用這種方法制作了fiddle,並且僅通過使用StringBuilder
就可以減少30mb的內存消耗(僅爲幾個kb)。
來源
2016-02-28 20:49:22
Jcl
嘗試使用tab而不是空格。 'richTextBox1.Text + = Convert.ToString(i * j)+「\ t」;' – cylon
將RichTextBox的字體設置爲'Courier New',然後通過填充乘法結果將文本添加到'RichTextBox'中: this.richTextBox1.AppendText(string.Format(「{0,3}」,i * j)); –