当我在文本框中输入一些文本时,我想在打印时将文本分成新行(1行中的7个字符)。
代码如下
e.Graphics.DrawString(textBox24.Text,
new Font("Arial", 12, FontStyle.Regular),
Brushes.Black,
new Point(32, 260));
我该怎么办?
拆分每7个字符并插入一个Environment.NewLine作为oerkelens建议。
public string GetPrintReadyString(string originalString)
{
string result = ""
for (var i = 0; i < originalString.Length; i += 7)
result += (originalString.Substring(i, Math.Min(7, originalString.Length - i)) + Environment.NewLine);
return result;
}
然后你可以通过传入你的字符串来调用这个方法:
e.Graphics.DrawString(GetPrintReadyString(textBox24.Text),
new Font("Arial", 12, FontStyle.Regular),
Brushes.Black,
new Point(32, 260));
不要忘记任何异常处理,因为您的字符串来自用户输入。
编辑:如果你真的真的想要它在一行中用以下内容替换textBox24.Text:
string.Join("", textBox24.Text.Select((c, i) => i > 0 && i % 7 == 0 ? string.Format(Environment.NewLine + c) : c.ToString()))
你可以这样做;
e.Graphics.DrawString(FormatText(textBox24.Text),
new Font("Arial", 12, FontStyle.Regular),
Brushes.Black,
new Point(32, 260));
它使用这种方法。它循环通过输入的字符串,在每第7个字符后插入一个新行
public string FormatText(string input)
{
string returnText = "";
int charCounter = 0;
foreach(char c in input)
{
result += c;
i++;
if(i == 7)
{
result += Environment.NewLine;
charCounter=0;
}
}
return returnText;
}