好吧,我在这里有一个奇怪的。我正在尝试使用Windows窗体来创建基本的图块引擎,但是我的一些代码只是......没有发生。我会发布有问题的块。Windows窗体代码没有执行?
private void MapEditor_Load(object sender, EventArgs e)
{
LoadImageList();
FixScrollBarScales();
cboCodeValues.Items.Clear();
cboCodeValues.Items.Add("ENEMY");
cboCodeValues.Items.Add("CHEST");
cboCodeValues.Items.Add("NPC");
for (int x = 0; x < 100; x++)
cboMapNumber.Items.Add(x.ToString().PadLeft(3, '0'));
cboMapNumber.SelectedIndex = 0;
TileMap.EditorMode = true;
backgroundToolStripMenuItem.Checked = true;
}
这应该在窗体加载时调用,对吗?代码潜入LoadImageList(),其中包含:
private void LoadImageList()
{
string filepath = Application.StartupPath +
@"\Content\Textures\IndoorTileSet.png";
Bitmap tileSheet = new Bitmap(filepath);
int tilecount = 0;
for(int y = 0; y < tileSheet.Height/TileMap.TileHeight; y++)
{
for(int x = 0; x < tileSheet.Width/TileMap.TileWidth; x++)
{
Bitmap newBitmap = tileSheet.Clone(
new System.Drawing.Rectangle(
x * TileMap.TileWidth,
y * TileMap.TileHeight,
TileMap.TileWidth,
TileMap.TileHeight),
System.Drawing.Imaging.PixelFormat.DontCare);
imgListTiles.Images.Add(newBitmap);
string itemName = "";
if(tilecount == 0)
itemName = "Empty";
if(tilecount == 1)
itemName = "Floor";
listTiles.Items.Add(new ListViewItem(itemName, tilecount++));
}
}
}
位图加载正确,但随后的整个MapEditor_Load方法只是停止工作。 tileCount似乎是调试器中的局部变量,其值为0,但调试器从不在执行分配的行上执行断点。我完全不知道为什么它会这样做,而且这让我感到疯狂。任何帮助? 哦,我把位图加载到try/catch块中,看看它是否以奇怪的方式处理异常,但我没有运气。它不会抛出异常。用更新后的版本替换我的IndoorTileSet后,我立即开始出现此问题。我尝试了一次彻底的重建,但没有成功。
我读了一些关于具有类似问题的人的东西,他们不得不声明某些东西是一个类的实例,但是这篇文章不够详细,不知道我是否会出错,或者我可能需要声明的实例才能工作......或者实例甚至意味着什么,真的。
顺便说一下,看看'Path.Combine',以确保你不会搞乱那个文件路径。 – MPelletier
否则,如果您将断点放在LoadImageList的第一行,您是否可以逐行执行? – MPelletier
我会检查补丁,谢谢你的建议。我可以遍历LoadImageList,但它在我提到的那些行之前跳出了方法。我问过问题的其他人提到它可能是64位操作系统的问题。我会在下面发表他们的建议。 – TimBKJ