在Windows AS中读取多行文本框由用户输入

时间:2015-08-13 19:03:58

标签: c# .net winforms

我有一个多行文本框的静态宽度。 当我连续输入长文本时,当我尝试阅读时,它在后面的代码中以单行显示。 我想使用这些数据在组件One {C1PrintDocument}中打印。用户输入。但它显示了同一行中的所有内容,并且它被截断了。 我正在处理japense和英语。

以下是JP文本的相同内容。 文字示例:“れはれはれはれはれはれはれ1はれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれははれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれ6はれはれれれれれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれれれれれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれれれれれ7はれはれはれはれはれはれは“。

我想在用户输入系统时在内部识别新行。 我尝试使用Environment.NewLine。但它不起作用,因为这是连续文本。 帮助我阅读Windows文本框中出现的文本以进行打印。

1 个答案:

答案 0 :(得分:0)

我写的解决这个问题的算法如下:

// <summary>
        // Functions takes the Large text and split the string according to the maximum length of the string per line.
        // </summary>
        // <param name="strData">String Data</param>
        // <param name="intMaxSize">Maximum Size of the row</param>
        // <returns></returns>
        public static List<string> GetLines(string strData, int intMaxSize)
        {
            List<string> strReturn = new List<string>();
            string[] strLineSplited = strData.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
            for (int intNoOfLine = 0; intNoOfLine < strLineSplited.Length; intNoOfLine++)
            {
                List<KeyValuePair<char, int>> listOfChar = new List<KeyValuePair<char, int>>();
                string strValue = strLineSplited[intNoOfLine];
                StringBuilder sbSingleLine = new StringBuilder();
                if (!string.IsNullOrEmpty(strValue))
                {
                    char[] charArr = strValue.ToCharArray();
                    int intCharCount = 0;
                    byte[] bascii = Encoding.ASCII.GetBytes(strValue);
                    for (int intCounter = 0; intCounter < bascii.Length; intCounter++)
                    {
                        int intASCIICode = bascii[intCounter];
                        if (intASCIICode >= 32 && intASCIICode <= 62)
                        {
                            listOfChar.Add(new KeyValuePair<char, int>(charArr[intCounter], 1));
                        }
                        else if (intASCIICode >= 65 && intASCIICode <= 122)
                        {
                            listOfChar.Add(new KeyValuePair<char, int>(charArr[intCounter], 1));
                        }
                        else
                        {
                            listOfChar.Add(new KeyValuePair<char, int>(charArr[intCounter], 2));
                        }
                    }
                    bool bFlag = true;
                    foreach (var charValue in listOfChar)
                    {
                        intCharCount += Convert.ToInt32(charValue.Value);
                        if (intCharCount < intMaxSize)
                        {
                            sbSingleLine.Append(charValue.Key);
                            bFlag = true;
                        }
                        else
                        {
                            sbSingleLine.Append(charValue.Key);
                            strReturn.Add(sbSingleLine.ToString());
                            sbSingleLine.Length = 0;
                            sbSingleLine.Capacity = 0;
                            intCharCount = 0;
                            bFlag = false;
                        }
                    }
                    if (intCharCount < intMaxSize && bFlag)
                    {
                        strReturn.Add(sbSingleLine.ToString());
                    }
                }
                else
                {
                    strReturn.Add(sbSingleLine.ToString());
                }
            }
            return strReturn;
        }