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

本文关键字:用户 输入 文本 Windows 读取 | 更新日期: 2023-09-27 18:07:45

我有一个多行文本框的静态宽度。当我连续键入长文本时,它显示在单行代码中,当我尝试阅读。我想使用这些数据在组件One {C1PrintDocument}中打印。如用户输入。但是它把所有的东西都显示在同一行,它被截断了。我既学英语又学日语。

下面是相同的JP文本。文本的例子:"れはれはれはれはれはれはれ1はれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれははれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれ6はれはれれれれれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれれれれれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれはれれれれれ7はれはれはれはれはれはれは"。

我想在用户进入系统时在内部识别新行。我尝试使用环境。换行符。但它不起作用,因为这是连续文本。帮助我阅读文本,因为它出现在窗口文本框打印。

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

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

// <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;
        }