在windows c#表单中,我试图通过使用代码创建一个复选框网格,因为最终的程序将允许动态输入宽度和高度。但是,代码不会在y方向上绘制复选框,只会在x方向上绘制。
private void begin_button_Click(object sender, EventArgs e)
{
Form frm = new Form();
CheckBox[] chk;
int height = 10;
int width = 20;
chk = new CheckBox[height * width];
int count = 0;
for (int i = 1; i <= height; i++)
{
for (int j = 1; j <= width; j++)
{
chk[count] = new CheckBox();
chk[count].Name = count.ToString();
chk[count].Location = new Point(i * 30, j * 30);
frm.Controls.Add(chk[count]);
count += 1;
Console.WriteLine(" i: " + i + " j: " + j + " Count: " + count);
}
}
frm.ShowDialog();
}
目前它似乎画了一列复选框,但我想要的是一个网格的复选框
你只能看到一列复选框的原因是因为它们彼此重叠(即左侧的复选框太宽,与右侧的复选框重叠)。
在for循环中添加chk[count].Width = 20;
,您将明白我的意思。
您为Point
类构造函数分配了不正确的参数。Point(x,y)
构造函数的参数分别为left
和top
。
像这样试试。
chk[count].Location = new Point(j * 30, i * 30);
但是,我更喜欢使用DataGridView
而不是做这个完成的东西,并将列类型分配给DataGridViewCheckBoxColumn
。这将是简单的,你的光标可以很容易地集中在下一个单元格使用键盘。甚至可以将DataSource
分配给DataGridView
。因此,您可以将选择的值存储在数据库中并检索回来。