WinForms динамическая матрица новая форма с кнопкой - PullRequest
0 голосов
/ 18 октября 2018

Итак, мне удалось создать динамический массив текстовых полей в новой форме с кнопкой внизу, но кнопка перекрывает некоторые текстовые поля, как показано на скриншоте:

http://prntscr.com/l7ln4q enter image description here

Я хотел бы добавить поле и отступ в массив, чтобы кнопка находилась под массивом. Это код, который генерирует массив:

    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);

            }
        }

    }

Генерация массива работает просто отлично.

1 Ответ

0 голосов
/ 18 октября 2018

Попробуйте, если вам нужно простое решение:

    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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...