我正在创建一个时间表软件来用c#开发我的技能。我使用这种数组buttons[][]
创建了一个按钮网格,重要的是我使用这种样式而不是这个buttons[,]
,因为稍后使用XML更容易序列化。所以我的网格是根据工作人员的数量动态创建的,但是列被设置为常数7,因为一周只有7天。但是当我输入超过7名员工时,我遇到了一个问题,因为它似乎抱怨说IndeOUTOfRangeException was unhandled
。我知道我的列设置为7,但我没有为最大行指定值,当我想添加第8个工作人员来创建8行时会出现此问题。
这是我必须创建网格的代码:
Button[][] buttons;
const int COLS= 7;
public Form1()
{
InitializeComponent();
buttons = new Button[COLS][];
for (Int32 c = 0; c < COLS; c++)
{
buttons[c] = new Button[COLS];
}
}
public void placeGrid()
{
for (int r = 0; r < countStaff; r++)
{
createColumns(r);
}
}
public void createColumns(int r)
{
int s = r * 25; //gap
for (int c = 0; c < COLS; c++)
{
buttons[c][r] = new Button();
buttons[c][r].SetBounds(75 * c, s, 75, 25);
buttons[c][r].Tag = cbTexts[c];
buttons[c][r].BackColor = Color.White;
buttons[c][r].ForeColor = Color.Indigo;
pnlGrid.Controls.Add(buttons[c][r]);
}
}
错误: 我不知道它为什么抱怨因为我没有改变列,而是排。