Изменение ширины элементов управления внутри панели tableLayout - PullRequest
0 голосов
/ 02 декабря 2011

Я создаю многострочные текстовые поля и помещаю их в панель макета таблицы:

tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.ColumnStyles.Clear();

tableLayoutPanel1.AutoScroll = true;
tableLayoutPanel1.GrowStyle = TableLayoutPanelGrowStyle.AddRows;
textbox1.Width = tableLayoutPanel1.Width - 100;
textbox1.Height = 150;
textbox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));

Как только я добавлю Textbox в tableLayout, его ширина изменится, и его прокрутка будет скрыта позадиполосы прокрутки макета таблицы.Я попробовал следующий код, но он не работал:

tableLayoutPanel1.ColumnStyles[0].SizeType = SizeType.Percent;
tableLayoutPanel1.ColumnStyles[0].Width=80;

1 Ответ

0 голосов
/ 04 декабря 2011

Когда вы устанавливаете привязки, вы позволяете панели макета таблицы (TLP) управлять размером текстового поля. Чтобы поставить текстовое поле ответственным, вы должны указать TLP автоматически изменять размеры строк и столбцов. То есть: строка и столбец, в котором находится текстовое поле, должны иметь SizeType = SizeType.AutoSize.

Должен признать, что трудно вручную кодировать TLP. Я иногда прибегаю к заглядыванию в файл designer.cs после формирования TLP и дочерних элементов управления, аналогично тому, что будет происходить динамически.

...