如何在发送到打印机时断开c#中文本框中的行

问题描述 投票:-1回答:2

当我在文本框中输入一些文本时,我想在打印时将文本分成新行(1行中的7个字符)。

代码如下

e.Graphics.DrawString(textBox24.Text, 
                      new Font("Arial", 12, FontStyle.Regular), 
                      Brushes.Black, 
                      new Point(32, 260));

我该怎么办?

c# .net windows forms printing
2个回答
0
投票

拆分每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()))

1
投票

你可以这样做;

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.