2014-03-12 37 views
-2

考慮以下代碼:誤差MessageBox.Show在C#

int total = 0; 
using(var inFile = new StreamReader("text.txt")) 
{ 
    string inValue = ""; 
    while ((inValue = inFile.ReadLine()) != null) 
    { 
     if(Int32.TryParse(inValue, out number)) 
     { 
      total += number; 
      Console.WriteLine("{0}", number); 
     } 
     else 
      Console.WriteLine("{0} - not a number", inValue); 
    } 
} 
Console.WriteLine("The sum is {0}", total); 

如果我做MessageBox.Show("{0}", number);,它給了我一個錯誤。爲什麼會這樣,我該如何解決它?

+1

這是一個終端應用程序嗎?這可能解釋一些事情。 –

+1

什麼錯誤?你喜歡尖叫 - 但你也喜歡給零相關的信息。不是一個聰明的組合。如果你得到一個錯誤,告訴我們什麼錯誤。哦,也許讀到你調用的方法... – TomTom

回答

0

MessageBox在控制檯應用程序中不起作用。

+1

爲什麼不呢?如果你解釋的更好。 –

1

它看起來像你正在編寫一個控制檯應用程序,然後Messagebox是不可能的。但是如果你實際上正在編寫一個Windows Forms應用程序,這裏是答案:

Messagebox沒有「內置」格式化程序,如Console.WriteLine。如果您想格式化字符串中,你必須使用String.Format

MessageBox.Show(String.Format("{0}", number)); 

或者:

MessageBox.Show(number.ToString()); 
0

的問題是與線

MessageBox.Show("{0}", number); 

不能調用MessageBox.show()以你調用Console.writeline()的方式。 MessageBox.show中的第二個參數是MessageBox標題。試着寫

MessageBox.Show(number) 

MessageBox.Show("The sum is "+number); 
1

The MSDN狀態非常明確,那MessageBox.Show確實需要兩個字符串。但是這兩個不是格式和參數,而是文本和標題。如果要格式化文本,請使用string.Format在之前格式化字符串並調用該方法。您也可以使用其他重載之一,但無論您使用哪種重載,都需要執行自己的格式設置。

命名空間: System.Windows.Forms的

大會:(在System.Windows.Forms.dll)

這意味着你需要這個命名空間你需要你的引用中的dll。這兩種情況在控制檯應用程序中都不會默認發生。