第一篇文章。基本上我正在嘗試基于 Winforms 中的陣列創建地圖網格。我雖然失敗了。這是我到目前為止所得到的
問題是它將所有內容顯示為一種顏色。而我希望它是基于陣列的某種顏色。
我認為問題是for回圈中的foreach回圈。由于 foreach 回圈在第二個 for 回圈中,它可能會重復 i 次,然后是每個 j 次。
但我太笨了,不知道如何排序。我知道 winforms 對此并不理想,我真的不想重做代碼,我只是想盡可能地完成這項作業。
命名空間測驗 { 公共部分類 Form1 : Form { int TILE_SIZE = 64; int MAP_NUM_ROWS = 11; int MAP_NUM_COLS = 15; 串列項 = new List();
int[] mapGrid =
{
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
public Form1()
{
InitializeComponent();
newTest();
}
private void newTest()
{
for (var i = 0; i < MAP_NUM_ROWS; i ) //
{
for (var j = 0; j < MAP_NUM_COLS; j )
{
PictureBox Walls = new PictureBox();
Walls.Location = new Point(i * TILE_SIZE, j * TILE_SIZE);
Walls.Height = TILE_SIZE;
Walls.Width = TILE_SIZE;
Walls.BorderStyle = BorderStyle.FixedSingle;
foreach (int test in mapGrid)
{
if (test == 0)
{
Walls.BackColor = Color.Red;
items.Add(Walls);
this.Controls.Add(Walls);
}
if (test == 1)
{
Walls.BackColor = Color.Orange;
items.Add(Walls);
this.Controls.Add(Walls);
}
}
}
}
}
}
}
在此處輸入影像描述
我試過使用 Panels 和 Flowlayoutpanels 以及 TableLayout 面板。問題似乎是回圈,我太累了,看不到解決方案。
uj5u.com熱心網友回復:
你不應該在主外環內的網格上回圈。你要
int test = mapGrid[i*MAP_NUM_COLS j]
即,選擇與您正在填充的行/列相匹配的單元格
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/537444.html
標籤:C#窗体
