фона:странно этикетки Авторазмер вопрос о TableLayoutPanel размер
У меня есть TableLayoutPanel помещенный в UserControl, который затем помещают в SplitContainer. Строки добавляются программно. TableLayoutPanel привязан к началу | Влево | Вправо, поэтому после добавления строк его высота пересчитывается и расширяется вниз.
Внутри TableLayoutPanel есть 2 колонки. Размер первого столбца - Абсолютный, размер второго столбца - AutoSize
В каждой ячейке есть этикетка. Все метки во второй колонке, определяются следующим образом:
Label vName = new Label();
vName.AutoSize = true;
vName.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
vName.Margin = new Padding(3);
vName.TextAlign = ContentAlignment.MiddleLeft;
vName.Name = "controlName";
vName.Text = "Some text here";
vName.DoubleClick += new EventHandler(vName_DoubleClick);
vName.Dock = DockStyle.None;
Проблема:
Обычно все работает хорошо, этикетки размер и все, кроме одного странного сценария, за исключением:
- Текст метки - это что-то вроде «immoballizes устройство (33.33%)», ширина столбца TableLauoutPanel2 устанавливается точно так, что весь текст показан в одной строке.
- изменение разветвителя расстояние от одного пикселя и UserControl изменяются: ширина уменьшается, метка должна изменить размер и текст в метке должен обернуть
- Метка не изменяются, а вторая строка текста не отображается, это также, вероятно, не обернуть (было бы изменить в текстовом месте в метке, если это имело место)
- изменения разветвитель расстояние от одного пикселя снова и UserControl изменяется: ширина уменьшается дополнительно
- Этикетка изменяет все в порядке и все текст показан, завернутый
То же самое происходит, когда ширина таблицы TableLayoutPanel увеличивается, но всегда, только если существует разница в одном пикселе (между обертыванием/без обтекания текста).
Кроме того, изменение док и/или анкера и/или BorderStyle свойства этикеток не работает (я, вероятно, перепробовал все возможные комбинации ...)
Эта фотография иллюстрирует вопрос немного:
Я заметил, как вы установите 'Anchor' и левый' Dock = DockStyle.None' ... есть причина? Док должен помочь в этом. – DonBoitnott
Я пробовал это в начале. Не имеет никакого значения. – Arie
Вы задаете противоречивые инструкции механизма компоновки. Вы говорите, что метка должна автоматически изменять размер с помощью AutoSize = true. Но тогда также скажите, что он должен наблюдать размер контейнера с свойством Anchor. Это имеет тенденцию вызывать бистабильную компоновку, поскольку есть два * решения для запроса макета.Вероятно, больше в вашем случае, потому что вы также сделали автозагрузку колонки. Вам нужно избавиться от этой двусмысленности. Начните с привязки якоря. –