C#中的MessageBox.Show出错

时间:2014-03-12 05:46:47

标签: c# numbers add

考虑以下代码:

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);,它会给我一个错误。为什么这样,我该如何解决?

4 个答案:

答案 0 :(得分:1)

看起来你肯定在编写一个控制台应用程序,然后Messagebox就不可能了。但是,如果您实际上正在编写Windows Forms应用程序,那么答案就是:

Messagebox没有“内置”格式化程序,如Console.WriteLine。如果要格式化字符串,必须使用String.Format

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

可替换地:

MessageBox.Show(number.ToString());

答案 1 :(得分:1)

The MSDN非常明确地指出,MessageBox.Show确实需要两个字符串。但这两个不是格式和参数,而是文本和标题。如果要格式化文本,请在调用方法之前使用string.Format格式化字符串。您也可以使用其他重载之一,但无论您使用哪种重载,都需要进行自己的格式化。

  

命名空间: System.Windows.Forms

     

汇编: System.Windows.Forms(在System.Windows.Forms.dll中)

这意味着您需要此命名空间,并且需要在引用中使用dll。默认情况下,两者都不会在控制台应用程序中发生。

答案 2 :(得分:0)

MessageBox无法在控制台应用程序中使用。

答案 3 :(得分:0)

问题在于

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

您无法以调用Console.writeline()的方式调用MessageBox.show()。 MessageBox.show中的第二个参数是MessageBox标题。试着写

MessageBox.Show(number) 

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