首页 > 解决方案 > WinForms 动态矩阵新表单带按钮

问题描述

所以我设法在一个新表单中创建了一个动态的文本框数组,下面有一个按钮,但是该按钮与屏幕截图中的一些文本框重叠:

http://prntscr.com/l7ln4q 在此处输入图像描述

我想为数组添加边距和填充,以便按钮位于数组下方这是生成数组的代码:

    int LinhaText = frmDim.linhas;
    int ColunText = frmDim.colunas;

    const int TEXTBOX_WIDTH = 30;
    const int TEXTBOX_HEIGHT = 30;
    const int SPACING = 0;
    List<List<TextBox>> textboxes = new List<List<TextBox>>();

    private void Form2_Load(object sender, EventArgs e)
    {
        for (int row = 0; row < LinhaText; row++)
        {
            List<TextBox> newRow = new List<TextBox>();
            textboxes.Add(newRow);
            for (int col = 0; col < ColunText; col++)
            {

                TextBox newbox = new TextBox();
                newbox.Width = TEXTBOX_WIDTH;
                newbox.Height = TEXTBOX_HEIGHT;
                newbox.Top = (row * (TEXTBOX_HEIGHT + SPACING)) + SPACING;
                newbox.Left = (col * (TEXTBOX_WIDTH + SPACING)) + SPACING;
                newRow.Add(newbox);
                this.Controls.Add(newbox);

            }
        }

    }

数组的生成工作得很好。

标签: c#winforms

解决方案


如果你只想要一个简单的解决方案,试试这个:

    private void Form1_Load(object sender, EventArgs e)
    {
        Panel p = new Panel();        // added code    

        for (int row = 0; row < LinhaText; row++)
        {
            List<TextBox> newRow = new List<TextBox>();
            textboxes.Add(newRow);
            for (int col = 0; col < ColunText; col++)
            {

                TextBox newbox = new TextBox();
                newbox.Width = TEXTBOX_WIDTH;
                newbox.Height = TEXTBOX_HEIGHT;
                newbox.Top = (row * (TEXTBOX_HEIGHT + SPACING)) + SPACING;
                newbox.Left = (col * (TEXTBOX_WIDTH + SPACING)) + SPACING;
                newRow.Add(newbox);
                p.Controls.Add(newbox);    // modified code (added textboxes to panel rather than form)

            }
        }

        // added code
        p.Dock = DockStyle.Fill;
        this.Controls.Add(p);
        this.Controls.SetChildIndex(p, 0);
        Button b1 = new Button();
        b1.Text = "hi";
        b1.Dock = DockStyle.Bottom;
        this.Controls.Add(b1);
        this.Controls.SetChildIndex(b1, 1);
    }

推荐阅读