C#Windows窗体帮助!没有显示面板

C#Windows窗体帮助!没有显示面板,c#,winforms,panel,C#,Winforms,Panel,我必须用C#窗口的形式做一个棋盘,上面有面板。我有一个按钮,两个文本框(用于设置列和行的数量)和一个大面板,我将在其中放置小窗格 这是按钮单击事件: private void button1_Click(object sender, EventArgs e) { int x, y, width, height, colors=0; Panel paneln; rows = Convert.ToInt32(t

我必须用C#窗口的形式做一个棋盘,上面有面板。我有一个按钮,两个文本框(用于设置列和行的数量)和一个大面板,我将在其中放置小窗格

这是按钮单击事件:

private void button1_Click(object sender, EventArgs e)
        {
            int x, y, width, height, colors=0;
            Panel paneln;

            rows = Convert.ToInt32(textBox1.Text);
            columns = Convert.ToInt32(textBox2.Text);

            height = panel1.Size.Height / rows;
            width = panel1.Size.Width / columns;
            x = panel1.Location.X;
            y = panel1.Location.Y;

            for (int i=0;i<rows;i++)
            {
                for(int k = 0;k<columns;k++)
                {
                    paneln = new Panel();
                    paneln.Location = new Point(x, y);
                    paneln.Size = new Size(width, height);

                    if (colors % 2 == 0)
                        paneln.BackColor = Color.Black;
                    else
                        paneln.BackColor = Color.White;
                   
                    paneln.BringToFront();
                    panel1.SendToBack();
                    this.Controls.Add(paneln);

                    x += width;
                    colors++;
                }
                x= panel1.Location.X;
                y += height;
                if (columns % 2 == 0) colors++;
            }
            button1.Enabled = false;
        }
private void按钮1\u单击(对象发送者,事件参数e)
{
整数x,y,宽度,高度,颜色=0;
小组讨论小组;
行=Convert.ToInt32(textBox1.Text);
columns=Convert.ToInt32(textBox2.Text);
高度=面板1.Size.height/行;
宽度=面板1.Size.width/列;
x=面板1.位置x;
y=面板1.位置。y;
对于(inti=0;i好的,我算出了!
我在做那件事

paneln.BringToFront();
panel1.SendToBack();

在将paneln添加到表单之前,它无法工作。

您缺少:this.Controls.Add(paneln)这会将面板添加到表单中。使用“绘制”控件是一种疯狂的开销,完全没有必要。只需使用父面板的
绘制
事件,并通过
图形绘制棋盘。填充矩形
。调用
面板。在需要重新绘制棋盘时(例如,当发生移动时)使其无效@jdweng我怎么会错过最后一个?当i=3和k=3时,循环是perfomed@GyörgyKőszeg这是我们老师说的,这是第一个Windows窗体作业,我必须这样做:(面板不够大。是否要将新面板添加到窗体或面板1?您正在将新面板添加到此窗体或面板1,我不确定是否为窗体或面板1。问题是x&y的起始值。不应使用面板1的位置。)。