none
C# form 文字方塊文字顯示無法多行顯示…會覆蓋舊的資料,如何才能不覆蓋呢? RRS feed

  • 問題

  • 無法插入超連結顯示form的外觀,簡單說一下,將文字打入方塊1、2、3    然後按加入 國文   丁丁  1

    方塊四的初始格式…  加入後想要的方式是顯示在下一行
    書名    作者    冊數
    國 文    丁丁   1
    英文     丁丁  1

    但我加入之後,卻是將  書名  作者  冊數 此行取代  變成

    國文   丁丁   1

    再打文 英文  丁丁 1   會再取代上一個 國文的部份


    文字方塊4的設定
    multiiline    True
    ScrollBars   Vertical

    且如果書名 作者 冊數 未輸入資料的話,將會跳出messagebox,先前有學到判斷如果沒int型態,使用try catch 可跳出messagebox,但字串不知道
    該如果寫才能跳出messagebox

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace 四章習題製作書目登錄程式
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                string a, b, c;
                a = textBox1.Text;
                b = textBox2.Text;
                c = textBox3.Text;
    
                
             textBox4.Text =(  a + b + c);
                
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                textBox4.Text = "書名\t作者\t冊數\t\r\n";
            }
        }
    }
    

    上面的卡在文字方塊4的顯示就沒再寫下去了,請幫我…卡住了,因為是自學沒人可問。

    2010年2月26日 上午 02:40

解答

  • Hi,

    您有注意到上面前輩們提到的"+=" ?

           private void button2_Click(object sender, EventArgs e)
            {
                string a, b, c;
                a = textBox1.Text;
                b = textBox2.Text;
                c = textBox3.Text;

               
             textBox4.Text +=  a + "\t" + b + "\t" + c + System.Environment.NewLine;
               
            }

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 raytai 2010年2月26日 上午 04:55
    2010年2月26日 上午 04:36
  • 那你要的應該是把這行改一下就好了.

    textBox4.Text =(  a + b + c);
    改為
    textBox4.Text += (  a + "\r\n" + b + "\r\n" + c + "\r\n");
    使用+=就不會把先前的給覆蓋掉.
    • 已標示為解答 raytai 2010年2月26日 上午 04:53
    2010年2月26日 上午 04:39

所有回覆

  • textBox4.Text +=  "\n" + a + b + c;
    2010年2月26日 上午 02:45
  • 小弟將 textBox4.Text =(  a + b + c); 改為

    textBox4.Text +=  "\n" + a + b + c;
     
    送出後…依然取代 書名 作者 冊數
    還是我的前面有地方寫錯:
    2010年2月26日 上午 02:59
  • 用 Environment. NewLine 試試
    請參閱MSDN文件庫
    [Environment. NewLine ]
    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年2月26日 上午 03:10
    版主
  • 因為你的button2 Click裡有一行有問題
    textBox4.Text =(  a + b + c);
    這樣textBox4.Text就只會有a+b+c,自然把你Page Load的設定取代
    textBox4.Text = "書名\t作者\t冊數\t\r\n"
    ;
    所以可以在button Click的textBox4.Text做一點小改變
    textBox4.Text = "書名\t作者\t冊數\t\r\n"
    +a+"\r\n"+b+"\r\n"+c+"\r\n";

    判斷字串是否為空值的方式有幾種
    1. textBox1.Text.Trim()==string.Empty
    2. textBox1.Text.Trim().Length==0
    3. textBox1.Text.Trim()=="";
    ~
    Ex :
    if (textBox1.Text.Trim()==string.Empty)
    {
        MessageBox.Show("Msg");
    }
    都有用到Trim(),避免使用者打入" ",空隔的字串
    2010年2月26日 上午 03:24
  • Hi!

    之前有整理關於斷行的一些方式 10. TextBox 與 RichTextBox 斷行(下一行)。 您可以看看


    小歐ou是個菜鳥工程師,回答不好請不要標我的回覆為解答,有網友熱心回覆也請發問者儘快回應,謝謝
    歡迎參觀我的Blog.NET菜鳥自救會
    2010年2月26日 上午 03:27
    版主

  • 使Jeff Yeh大大的方式,可以顯示第一本書的書名 作者 冊數,但再輸入第二本時,又再次覆蓋掉第一本的資料,進而取代原本的第一本書的資料。
    照書本上寫,此應該是要練習\r\n,就是不能像上面書本上,增加多本書資料。



    書名    作者    冊數
    國 文    丁丁   1
    英文     丁丁   1
    地理     波波   1
    數字     可可    1

    2010年2月26日 上午 04:15
  • Hi,

    您有注意到上面前輩們提到的"+=" ?

           private void button2_Click(object sender, EventArgs e)
            {
                string a, b, c;
                a = textBox1.Text;
                b = textBox2.Text;
                c = textBox3.Text;

               
             textBox4.Text +=  a + "\t" + b + "\t" + c + System.Environment.NewLine;
               
            }

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 raytai 2010年2月26日 上午 04:55
    2010年2月26日 上午 04:36
  • 那你要的應該是把這行改一下就好了.

    textBox4.Text =(  a + b + c);
    改為
    textBox4.Text += (  a + "\r\n" + b + "\r\n" + c + "\r\n");
    使用+=就不會把先前的給覆蓋掉.
    • 已標示為解答 raytai 2010年2月26日 上午 04:53
    2010年2月26日 上午 04:39
  • 感謝:確實問題在textBox4.Text =(  a + b + c);
    改成textBox4.Text += (  a + "\r\n" + b + "\r\n" + c + "\r\n");
    +=確實為關鍵:
    小弟為新手。感謝大家的回答,之後還請大家多多幫忙…
    2010年2月26日 上午 04:55
  • Hi,

    您有注意到上面前輩們提到的"+=" ?

           private void button2_Click(object sender, EventArgs e)
            {
                string a, b, c;
                a = textBox1.Text;
                b = textBox2.Text;
                c = textBox3.Text;

               
             textBox4.Text +=  a + "\t" + b + "\t" + c + System.Environment.NewLine;
               
            }

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/

    感謝指出問題關鍵。
    2010年2月26日 上午 04:56