Установить кнопку под каждым в панели - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю форму, очень похожую на WhatsApp Web, но в windows формах. Поэтому я хочу добиться этого: enter image description here

Я создаю панель, и внутри этой панели есть следующие кнопки:

    var button = new Button();
        button.Text = "test customer";
        button.Font = new Font("Arial",12, FontStyle.Bold) ;
        button.TextAlign = ContentAlignment.MiddleRight;
        button.Image = imageList1.Images[0];
        button.ImageAlign = ContentAlignment.MiddleLeft;
        button.Width = 293;
        button.Height = 50;


    var button2 = new Button();
    button2.Text = "test customer 2";
    button2.Font = new Font("Arial",12, FontStyle.Bold) ;
    button2.TextAlign = ContentAlignment.MiddleRight;
    button2.Image = imageList1.Images[0];
    button2.ImageAlign = ContentAlignment.MiddleLeft;
    button2.Width = 293;
    button2.Height = 50;



    pnlCustomers.Controls.Add(button);
    pnlCustomers.Controls.Add(button2);

Это только для Тестовые цели. Я создам несколько кнопок в выражении foreach, может быть, 100 или больше. У меня вопрос, как я могу расположить каждую кнопку одну под другой

ОБНОВЛЕНИЕ

Я пытаюсь использовать TableLayotPanel в качестве комментариев ниже, но одна странная вещь происходит, одна кнопка идет вверх и внизу TableLayoutPanel, как я могу это исправить?

enter image description here

Код:

 var button = new Button();
            button.Text = "test customer";
            button.Font = new Font("Arial",12, FontStyle.Bold) ;
            button.TextAlign = ContentAlignment.MiddleRight;
            button.Image = imageList1.Images[0];
            button.ImageAlign = ContentAlignment.MiddleLeft;
            button.Width = 293;
            button.Height = 50;

            var button2 = new Button();
            button2.Text = "test customer 2";
            button2.Font = new Font("Arial", 12, FontStyle.Bold);
            button2.TextAlign = ContentAlignment.MiddleRight;
            button2.Image = imageList1.Images[0];
            button2.ImageAlign = ContentAlignment.MiddleLeft;
            button2.Width = 293;
            button2.Height = 50;

            tlpCustomers.RowCount = 2;
            tlpCustomers.AutoSize = true;
            tlpCustomers.Controls.Add(button,0,0);
            tlpCustomers.Controls.Add(button2,0,1);

1 Ответ

0 голосов
/ 23 апреля 2020

Прежде всего, я использую TableLayoutPanel, как подсказывает @Dmitry.

Как только я обнаружил проблему, одна кнопка переходит в верхнюю часть панели, а другая внизу, что происходит потому, что каждая строка имеет предопределенное значение Height, поэтому это total of the panel height / bottom count, чтобы решить, что я просто изменяю значение высоты панели следующим образом:

 TableLayoutRowStyleCollection styles =
     tlpCustomers.RowStyles;
            foreach (RowStyle style in styles)
            {

                style.SizeType = SizeType.Absolute;
                style.Height = 50;
            }

и работает:

enter image description here

Весь код:

  var button = new Button();
            button.Text = "test customer";
            button.Font = new Font("Arial",12, FontStyle.Bold) ;
            button.TextAlign = ContentAlignment.MiddleRight;
            button.Image = imageList1.Images[0];
            button.ImageAlign = ContentAlignment.MiddleLeft;
            button.Width = 293;
            button.Height = 50;

            var button2 = new Button();
            button2.Text = "test customer 2";
            button2.Font = new Font("Arial", 12, FontStyle.Bold);
            button2.TextAlign = ContentAlignment.MiddleRight;
            button2.Image = imageList1.Images[0];
            button2.ImageAlign = ContentAlignment.MiddleLeft;
            button2.Width = 293;
            button2.Height = 50;

            tlpCustomers.RowCount = 2;

                TableLayoutRowStyleCollection styles =
         tlpCustomers.RowStyles;
                foreach (RowStyle style in styles)
                {

                    style.SizeType = SizeType.Absolute;
                    style.Height = 50;
                }
            tlpCustomers.AutoSize = true;
            tlpCustomers.Controls.Add(button,0,0);
            tlpCustomers.Controls.Add(button2,0,1);

Если есть более точное решение, я действительно ценю, что вы можете поделиться этим с сообществом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...