c#为复选框添加了新的点,不会在y方向上推过复选框



在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)构造函数的参数分别为lefttop

像这样试试。

chk[count].Location = new Point(j * 30, i * 30);

但是,我更喜欢使用DataGridView而不是做这个完成的东西,并将列类型分配给DataGridViewCheckBoxColumn。这将是简单的,你的光标可以很容易地集中在下一个单元格使用键盘。甚至可以将DataSource分配给DataGridView。因此,您可以将选择的值存储在数据库中并检索回来。

最新更新