2017-07-15 38 views
0

我不明白爲什麼say()方法無法寫入我的表單稱爲「ConsoleBox」的文本框。請幫忙。C#輸出不會轉到文本框的形式

OLD: 公共部分Form1類:形式 { 公共Form1中() { 的InitializeComponent();
}

public void say(string h) 
    { 
     System.Console.WriteLine(); 
     ConsoleBox.AppendText(h); 
    } 


    public void richTextBox_ChangedText(object sender, EventArgs e) 
    {       
     say("Online ..."); 
     say("What is you Name?"); 
     string Name = System.Console.ReadLine(); 
     say("It is truly a pleasure to meet you, Sir {0}" + Name); 
    } 
} 

這是應該如何? 新功能:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent();         
     } 

     public void say(string h) 
     {     
      ConsoleBox.AppendText(h); 
     } 



     private void ConsoleBox_TextChanged(object sender, EventArgs e) 
     {    
      say("Online ..."); 
      say("What is you Name?"); 
      //string Name = outputbox.AppendText(); 
      //say("It is truly a pleasure to meet you, Sir {0}" + Name); 
     } 
    } 

回答

0

在代碼中沒有任何錯誤。看起來TextBox的大小非常小,並且您無法看到所有文本。請儘量讓它變大。

幾項改進。

您應該在測試中註釋掉或刪除包含System.Console的行。我不認爲你可以在VS IDE的調試模式下運行它時看到控制檯窗口。這些線路不起任何作用。即使System.Console.ReadLine也無法讀取任何內容。

先試着只用低於2線運行:

say("Online ..."); 
say("What is you Name?"); 

下面的代碼工作對我來說:

public void say(string h) 
{ 
    System.Console.WriteLine(); 
    textBox1.AppendText(h); 
} 

private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    say("Online ..."); 
    say("What is you Name?"); 
} 
+0

遺憾了「System.Console」我的教程至今沒有告訴我怎麼不要使用它。我試着做「WriteLine();」在說方法,但它沒有,你可以告訴我如何改寫它的工作請 – littleman27

+0

你已經完成了寫作,而不是寫入控制檯你會將文本追加到文本框。您可以添加另一個「文本框」並從該文本框中獲取「名稱」。它可以讓你刪除'System.Console.ReadLine()'行。 – MKR

+0

對不起,請保留RitchTextBox上的'textchanged'事件。它應該現在工作,因爲它適用於我的編輯代碼。如果它不起作用,那麼讓我知道你使用了哪個版本的VS。 – MKR