C# 字符串多行顯示、文本換行


方法1:以textbox為例

        ①:先設置textbox的屬性Multiline為true

        ②:組織好顯示字符串:FistLine(第一行要顯示的字符)、SecondLine(第二行要顯示的字符)、。。。。。。。、第n行字符

        ③:textbox.text="FistLine"+System.Environment.NewLine+"SecondLine"+System.Environment.NewLine+。。。。+"第N 行"+System.Environment.NewLine

   當你看到上面代碼的時候可能會認為我們一般用的換行符不是"\r\n"

  你會想到這種方式:textbox.text="FistLine"+“\r\n”+"SecondLine"+"\r\n"+。。。。+"第N 行"+"\r\n"

 這種格式可能在運行時也不會出錯,但在Linux操作系統或其他系統可能就會出錯

 WinForm的 textbox截圖效果:

Textbox例子1用("\r\n"):具體代碼:

 /// <summary>
        ///  將結果填充到會員預定情況框
        /// </summary>
        /// <param name="dt"></param>
        private void BindGuestOrder(DataTable dt)
        {
            int intRowsCount;
            intRowsCount = dt.Rows.Count;
            string[] strName = new string[intRowsCount];
            string[] strPhone = new string[intRowsCount];
            string[] strRoom = new string[intRowsCount];
            string[] strNum = new string[intRowsCount];
            string[] strTime = new string[intRowsCount];
            for (int intRows = 0; intRows < intRowsCount; intRows++)
            {
                strName[intRows] = dt.Rows[intRows]["GuestName"].ToString();
                strPhone[intRows] = dt.Rows[intRows]["LinkPhone"].ToString();
                strRoom[intRows] = dt.Rows[intRows]["RoomName"].ToString();
                strNum[intRows] = dt.Rows[intRows]["BookNo"].ToString();
                strTime[intRows] = dt.Rows[intRows]["DineTime"].ToString();
                AddMsgToTextBox("客人姓名:" + strName[intRows]);
                AddMsgToTextBox("客人電話:" + strPhone[intRows]);
                AddMsgToTextBox("預定房間:" + strRoom[intRows]);
                AddMsgToTextBox("預約號:" + strNum[intRows]);
                AddMsgToTextBox("預定時間:" + strTime[intRows]);
            }
        }

 

private int intCounts = 1;
        /// <summary>
        /// 顯示多行文本
        /// </summary>
        /// <param name="s"></param>
        public void AddMsgToTextBox(string s)
        {
            int intCount1;
            intCount1 = intCounts / 5;
            CheckTextBox(intCount1);
            txtVIPAdvanceOrder.Text += "\r\n" + s;
            if (intCounts % 5 == 0)
            {
                txtVIPAdvanceOrder.Text += "\r\n";
            }
            intCounts++;
        }

        /// <summary>
        /// 設置換行
        /// </summary>
        protected void CheckTextBox(int intCount1)
        {
            int iLines = 5 * (intCount1 + 2); //想顯示多少行。

            string stxt = txtVIPAdvanceOrder.Text;
            string[] s = stxt.Split('\n');
            if (s.Length < iLines)
                return;
            txtVIPAdvanceOrder.Text = "";
            for (int i = 1; i < s.Length; i++)
            {
                txtVIPAdvanceOrder.Text += s[i] + "\r\n";
            }
            stxt = txtVIPAdvanceOrder.Text;
            if (stxt != "")
                txtVIPAdvanceOrder.Text = stxt.Substring(0, stxt.Length - 1);
        }

 

 

 例子2:截圖效果(dev 控件(Memoedit)):

源碼:

 /// <summary>
        ///  將結果填充到會員預定情況框
        /// </summary>
        /// <param name="dt">預定會員的信息表</param>
        private void BindGuestOrder(DataTable vardt)
        {
            memGusetInfo.Text = "";
            int tmpRowsCount;
            tmpRowsCount = vardt.Rows.Count;
            string[] tmpstrName = new string[tmpRowsCount];
            string[] tmpstrPhone = new string[tmpRowsCount];
            string[] tmpstrRoom = new string[tmpRowsCount];
            string[] tmpstrNum = new string[tmpRowsCount];
            string[] tmpstrTime = new string[tmpRowsCount];
            for (int i = 0; i <  tmpRowsCount; i++)
            {
                tmpstrName[i] = vardt.Rows[i]["GuestName"].ToString();
                tmpstrPhone[i] = vardt.Rows[i]["LinkPhone"].ToString();
                tmpstrRoom[i] = vardt.Rows[i]["RoomName"].ToString();
                tmpstrNum[i] = vardt.Rows[i]["BookNo"].ToString();
                tmpstrTime[i] = vardt.Rows[i]["DineTime"].ToString();
                string tmpstr1 = "客人姓名:" + tmpstrName[i] + System.Environment.NewLine;
                string tmpstr2 = "客人電話:" + tmpstrPhone[i] + System.Environment.NewLine;
                string tmpstr3 = "預定房間:" + tmpstrRoom[i] + System.Environment.NewLine;
                string tmpstr4 = "預約號:" + tmpstrNum[i] + System.Environment.NewLine;
                string tmpstr5 = "預約時間:" + tmpstrTime[i] + System.Environment.NewLine;
                memGusetInfo.Text += string.Format("{0}{1}{2}{3}{4}", tmpstr1, tmpstr2, tmpstr3, tmpstr4, tmpstr5) + System.Environment.NewLine;
            }
        }

現在DEV控件比較多人用:所以弄了一個DEV的例子,DEV有專門的文本框控件(Memoedit)其實原理都一樣,效果也差不多

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM