В то время как я считаю, что текущий ответ на голосование вполне адекватен, он также кажется немного более грязным, чем нужно. Перед установкой их свойств вы должны добавить элементы управления в таблицуLayoutPanel.
Visual Studio (2013 год и, вероятно, другие версии) покажет эти свойства как часть элемента управления. Когда на самом деле они являются частью таблицыLayoutPanel.
Пояснение:
tableLayoutPanel.Controls.Add(**control**, x, y)
tableLayoutPanel.SetColumnSpan(**control**, '# of cols to span')
Пример:
tableLayoutPanel1.Controls.Add(**button1**, 0, 0);
tableLayoutPanel1.SetColumnSpan(**button1**, 2);
tableLayoutPanel1.SetRowSpan(**button1**, 3);
Результат: какая кнопка 'занимает' это пространство. (При условии, что это достаточно большой, чтобы покрыть площадь. Даже если это не «крышка» пространство, он все равно будет «запасным» это.)
O O X X X
O O X X X
O O X X X
X X X X X
X X X X X
Установка диапазона больше, чем размер воли сетки. .: НЕ изменяйте размер сетки. НЕ обрезать/изменить номер до размера сетки. НЕ выбрасывать ошибку при компиляции.
Он будет действовать/выполнять, как если бы диапазон был установлен на максимальный размер текущей сетки (tableLayoutPanel). Это имеет значение только при изменении размера TLP/сетки.
Если вы программно добавили два элемента управления с двумя одинаковыми сетками, первый элемент управления в сетке сохраняет свое местоположение. Любой добавленный впоследствии элемент управления переходит к следующему блоку ячейки. Если добавлен «span», он будет рассматривать этот блок ячейки как используемый и продолжить поиск неиспользуемого блока ячейки.
Пример: label1, label2 и Метка3 добавляют к 0,0.
- label1 появится в 0,0
- label2: 0,1
- LABEL3: 0,2
Пример 2: метка 1 имеет размах строк от 2.
- label1: 0,0
- label2: переселены 0,2
- LABEL3: 0,3
После того как вы выбрали правильную точку сетки и пролетов, вы можете дополнительно оптимизируйте свой макет, используя свойства док-станции и привязки.
отличный код. Visual Studio Designer вводит меня в заблуждение. Я смотрел в свойствах button1, пытался наложить кнопку1 на элемент toolstippanel и так далее ... спасибо! –
, если вы изучили Form.Designer.cs вместо визуального дизайнера, у вас было найденное решение. ;-) – Oliver
Я знаю, что это старый пост, но я хотел бы указать, что вам не нужно выполнять «условия yoda» в C#, поскольку если инструкции строго типизированы. (И я верю, что если вы делаете ошибку с булевыми элементами и ставите назначение вместо сравнения, оно генерирует предупреждение компилятора, в отличие от ошибки, которую он генерирует с любым другим типом.) – MiffTheFox