复选框的新点未在y方向上推过复选框,C#
在windows C#窗体中,我试图通过使用代码创建一个复选框网格,因为最终的程序将允许动态输入宽度和高度。但是,代码不会在y方向上绘制我的复选框,只会在x方向上绘制复选框的新点未在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
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提到的重叠问题,但是我认为