Установить элементы управления внутри элемента управления внутри той же строки TableLayoutPanel - PullRequest
1 голос
/ 25 февраля 2020

Я создаю TableLayoutPanel, где я хочу добавить две кнопки одна рядом с другой, поэтому я пытаюсь:

Сначала я создаю панель как:

  var pnlButtons = new TableLayoutPanel
            {
                Name = "pnlButtons",
                AutoSize = true,
                AutoSizeMode = AutoSizeMode.GrowAndShrink,
                Dock = DockStyle.Bottom,
                RowCount = 1,
                TabIndex = 1
            };

            pnlButtons.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            pnlButtons.ColumnStyles.Add(new ColumnStyle());
            pnlButtons.RowStyles.Add(new RowStyle());

            pnlButtons.HandleCreated += new EventHandler(pnlButtons_Created);
            this.Controls.Add(pnlButtons);

Затем я добавляю кнопки в обработчик событий :

private void pnlButtons_Created (object sender, EventArgs e)
        {
            var pnl = (TableLayoutPanel)sender;
            var btnSetAmount = new Button
            {
                Text = "Set Amounts",
                Name = "btnSetAmount",
                Anchor = AnchorStyles.Top | AnchorStyles.Right,
                TabIndex = 0,
                UseVisualStyleBackColor = true

            };
            pnl.Controls.Add(btnSetAmount);

            var btnCancel = new Button
            {
                Text = "Cancel",
                Name = "btnCancel",
                Anchor = AnchorStyles.Top | AnchorStyles.Left,
                TabIndex = 1,
                UseVisualStyleBackColor = true
            };
            pnl.Controls.Add(btnCancel);

        }

Но когда я запускаю его, я вижу что-то вроде этого:

enter image description here

Это в другой строке. Как я могу сделать, чтобы установить в той же строке? С уважением

Обновление: после комментариев выше теперь это выглядит так:

enter image description here

1 Ответ

1 голос
/ 25 февраля 2020

TableLayoutPanel имеет переопределение в коллекции Controls, которое позволяет вам указать столбец и строку:

pnl.Controls.Add(btnSetAmount, 0, 0);
pnl.Controls.Add(btnCancel, 1, 0);
...