无法弄清楚类“InitializationException”

时间:2015-11-29 18:41:04

标签: c# exception initialization

“Game.exe中发生了'System.TypeInitializationException'类型的未处理异常”是我尝试运行程序时收到的错误。它说它构建为0错误,但它不会启动,当我在调试中运行它时,我得到的消息。

我认为这是关于这个课程的事情:

class Sprites
{
    private static Bitmap sheet;
    private const int TILE_SIZE = 32;

    public static Bitmap loadSprite(string file)
    {
        Bitmap sprite;

        sprite = new Bitmap("Content/Sprites/" + file);

        return sprite;
    }

    public static Bitmap getSprite(int x, int y)
    {
        if (sheet == null)
            sheet = loadSprite("char.png");

        Rectangle crop = new Rectangle(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
        System.Drawing.Imaging.PixelFormat format = sheet.PixelFormat;
        return sheet.Clone(crop, format);
    }
}

似乎是在调用其中的方法的时候,因为当我在这个类中没有调用任何东西的情况下运行时它就可以了。我的主要形式中没有别的东西,因为我刚刚开始这样做。

现在我尝试使用一个没有任何好处的位图文件。它在program.cs“Application.Run(new Form1());”中的初始化行上出错。它并没有告诉我更多。我发布了我的课程,因为它在我不使用时运行。

在form1.cs里面

static Bitmap[] walkForward = { Sprites.getSprite(2, 0), Sprites.getSprite(2, 1), Sprites.getSprite(2, 2) };
    Animation walking = new Animation(walkForward, 10);

    public Form1()
    {
        InitializeComponent();
    }

完整错误输出到文本文件:

  

System.TypeInitializationException:'Game.Form1'的类型初始值设定项引发了异常。 ---> System.ArgumentException:参数无效。      在System.Drawing.Bitmap..ctor(String filename)      在Game.Sprites.loadSprite(String file)中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Sprites.cs:第19行      在Game.Sprites.getSprite(Int32 x,Int32 y)中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Sprites.cs:第27行      在Game.Form1..cctor()中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Form1.cs:第15行      ---内部异常堆栈跟踪结束---      在Game.Form1..ctor()      在Game.Program.Main()中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Program.cs:第21行

     

System.ArgumentException:参数无效。      在System.Drawing.Bitmap..ctor(String filename)      在Game.Sprites.loadSprite(String file)中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Sprites.cs:第19行      在Game.Sprites.getSprite(Int32 x,Int32 y)中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Sprites.cs:第27行      在Game.Form1..cctor()中的c:\ Users \ tiern \ Documents \ Visual Studio 2013 \ Projects \ MoveSpites \ Game \ Form1.cs:第15行

1 个答案:

答案 0 :(得分:0)

原来它无法在磁盘上找到该文件。它从bin文件夹而不是项目的根目录中读取。