复选框的新点未在y方向上推过复选框,C#

复选框的新点未在y方向上推过复选框,C#,c#,winforms,user-interface,C#,Winforms,User Interface,在windows C#窗体中,我试图通过使用代码创建一个复选框网格,因为最终的程序将允许动态输入宽度和高度。但是,代码不会在y方向上绘制我的复选框,只会在x方向上绘制 private void begin_button_Click(object sender, EventArgs e) { Form frm = new Form(); CheckBox[] chk; int height = 10; int widt

在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();
    }
private void begin\u按钮\u单击(对象发送者,事件参数e)
{
表格frm=新表格();
复选框[]chk;
整数高度=10;
整数宽度=20;
chk=新复选框[高度*宽度];
整数计数=0;

对于(int i=1;i您为
类构造函数指定了不正确的参数。
点(x,y)
构造函数的参数分别为

像这样试试

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

但是,我更喜欢使用
DataGridView
而不是完成这些工作,并将列类型分配给
DataGridViewCheckBoxColumn
。这将非常简单,而且您的光标可以使用键盘轻松地聚焦到下一个单元格。甚至您可以将
DataSource
分配给
DataGridView
。因此,您可以将所选值存储在数据库中并检索回来。

您为
类构造函数指定了不正确的参数。
点(x,y)
构造函数的参数分别为

像这样试试

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

但是,我更喜欢使用
DataGridView
而不是完成这些工作,并将列类型分配给
DataGridViewCheckBoxColumn
。这将非常简单,而且您的光标可以使用键盘轻松地聚焦到下一个单元格。甚至您可以将
DataSource
分配给
DataGridView
。因此,您可以将所选值存储在数据库中并检索回来。

您为
类构造函数指定了不正确的参数。
点(x,y)
构造函数的参数分别为

像这样试试

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

但是,我更喜欢使用
DataGridView
而不是完成这些工作,并将列类型分配给
DataGridViewCheckBoxColumn
。这将非常简单,而且您的光标可以使用键盘轻松地聚焦到下一个单元格。甚至您可以将
DataSource
分配给
DataGridView
。因此,您可以将所选值存储在数据库中并检索回来。

您为
类构造函数指定了不正确的参数。
点(x,y)
构造函数的参数分别为

像这样试试

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

但是,我更喜欢使用
DataGridView
而不是完成这些工作,并将列类型分配给
DataGridViewCheckBoxColumn
。这将非常简单,而且您的光标可以使用键盘轻松地聚焦到下一个单元格。甚至您可以将
DataSource
分配给
DataGridView
。因此,您可以将所选值存储在数据库中并检索回来。

之所以只能看到一列复选框,是因为它们相互重叠(即左侧的复选框太宽,与右侧的复选框重叠)


在for循环中添加
chk[count].Width=20;
,您就会明白我的意思。

之所以只能看到一列复选框,是因为它们彼此重叠(即左侧的复选框太宽,与右侧的复选框重叠)


在for循环中添加
chk[count].Width=20;
,您就会明白我的意思。

之所以只能看到一列复选框,是因为它们彼此重叠(即左侧的复选框太宽,与右侧的复选框重叠)


在for循环中添加
chk[count].Width=20;
,您就会明白我的意思。

之所以只能看到一列复选框,是因为它们彼此重叠(即左侧的复选框太宽,与右侧的复选框重叠)



在for循环中添加
chk[count].Width=20;
,你就会明白我的意思。

你看过TableLayoutPanel控件了吗?@JohannBlais,没有,我没有,我现在就去看看。:)你看了TableLayoutPanel控件了吗?@JohannBlais,没有,我现在就去查看。:)你看了TableLayoutPanel控件了吗?@JohannBlais,没有,我现在就去查看。:)你看了TableLayoutPanel控件了吗?@JohannBlais,没有,我现在就去查看。:)谢谢,我要上厕所了进入
DataGridView
,不幸的是,我糟糕的实现仍然存在问题,没有任何东西是在y方向绘制的。即使我转到“DataGridView”,我也希望它能正常工作,因为它整天都在困扰着我。(然后我会正确地,诚实地!)你知道为什么y方向没有复选框吗?你有没有像我在帖子中提到的那样尝试在
i
j
之间交换参数位置?是的,我有,这似乎是Richard提到的重叠问题,但是我认为指定x,y坐标可以解决这个问题重叠问题。谢谢,我将研究一下
DataGridView
,不幸的是,我的实现仍然很差,没有任何东西是向y方向绘制的。即使我转到“DataGridView”,我也希望它能够工作,因为它整天都在困扰着我。(然后我会正确地完成这项工作,老实说!)你知道为什么y方向没有复选框吗?你有没有像我在帖子中提到的那样尝试在
i
j
之间交换参数位置?是的,我有,这似乎是Richard提到的重叠问题,但是我认为