Ярлыки TableLayoutPanel привязываются к верхнему левому углу? - PullRequest
1 голос
/ 22 сентября 2010

У меня есть TableLayoutPanel, и каждый раз, когда я помещаю метку в одну из ячеек, она привязывается к верхнему левому углу.Как я могу сделать так, чтобы это не делалось или менялось, где оно привязывалось.

Кроме того, возможно ли изменить цвет фона определенной ячейки?

Спасибо!

Ответы [ 6 ]

6 голосов
/ 22 сентября 2010

Так, вы можете контролировать, где метка «защелкивается» в ячейке, установив свойство Dock для метки.Он будет пристыкован в пределах клетки.Я не верю, что вы можете изменить цвет фона ячейки.Один из способов обойти это - поместить панель в каждую ячейку, установить ее в док, используя полную ячейку, и установить фоновый цвет панели.

2 голосов
/ 22 сентября 2010

Чтобы изменить расположение элемента управления в ячейке, используйте свойство привязки элемента управления.

Чтобы изменить цвет фона ячейки в TableLayoutPanel, используйте событие CellPaint элемента управления, чтобы проверить, какой столбец и / или строка рисуется, и соответственно установить цвет.

Следующее будет устанавливать цвет фона ячейки на 1, 1 на красный:

    private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
        if (e.Column == 1 && e.Row == 1) {
            e.Graphics.FillRectangle(Brushes.Red, e.CellBounds);
        }
    }
0 голосов
/ 05 июня 2018

Используя свойства ярлыка Dock и TextAlign, вы можете установить текстовый ярлык на нужном месте в таблицеlayoutpanel

0 голосов
/ 01 августа 2015

Первый набор AutoSize свойство метки False. Затем установите свойство TextAlign по своему желанию. Он не будет снова распространяться на верхний левый угол.

0 голосов
/ 05 сентября 2011

Установка свойства привязки является лучшим решением, чем обычная стыковка.Вы также можете использовать свойство margin для настройки положения метки в ячейке.Полезно установить верхнее поле метки равным 6 или около того, если вам нужно, чтобы оно совпадало с текстовыми полями в одной строке.

Я могу категорически заявить, что вы не можете поместить более одного элемента управления в ячейку.Сделайте так, как предложили другие, и добавьте свои ярлыки на панель, затем добавьте панель в ячейку.Панели Flowlayout могут быть хороши для этого, просто не переусердствуйте, иначе все станет очень грязно.

0 голосов
/ 01 августа 2011

@ У Джея Риггса есть ответ.Чтобы немного объяснить это:

У меня были проблемы.Я не думаю. Док бы справился.В моем случае я добился успеха, установив

            lbl.Anchor = AnchorStyles.None; // to center the label. causes empty left space.
            // OR
            lbl.Anchor = AnchorStyles.Left // label sticks to left of the container and hence looks neatly aligned along with other controls.
...