К сожалению (я надеюсь, что кто-то еще опубликует лучшее решение!), Единственный известный мне обходной путь - это поместить панель внутри формы.
Установите для свойств Autoscroll
и AutoSize
родительской формы значение true. Затем увеличьте размер панели до желаемого размера. Сама форма по-прежнему не будет больше вашего разрешения экрана, но будет отображать полосы прокрутки, так что вы, по крайней мере, можете использовать конструктор для перетаскивания элементов управления и т. Д. За пределы ограничений по размеру на большую панель.
Затем вам может понадобиться добавить некоторый код для настройки размера форм во время выполнения, чтобы он был достаточно большим, чтобы отображать панель без полос прокрутки (и, возможно, также отключить свойство Autoscroll).
Я знаю, это не очень хороший обходной путь ...
РЕДАКТИРОВАТЬ :
Похоже, это намеренно и по замыслу:
* 1018 MSDN *
Форма собственности. Размер:
Максимальное значение этого свойства ограничено
разрешение экрана, на котором работает форма. Значение не может
быть больше 12 пикселей для каждого размера экрана (по горизонтали + 12
и вертикальный + 12).
и снова на Microsoft Connect / отслеживание общедоступных ошибок :
Опубликовано Microsoft 10.09.2008 в 00:18
Спасибо за ваш отзыв
в .NET Framework!
Проблема, о которой вы сообщили, на самом деле является разработкой.
В MSDN на http://msdn.microsoft.com/en-us/library/25w4thew.aspx, вы
можете найти следующую информацию в теме Form.Size Property:
Максимальное значение этого свойства ограничено разрешением
экран, на котором работает форма. Значение не может быть больше 12
пикселей по каждому размеру экрана (по горизонтали + 12 и по вертикали + 12).
Поэтому мы не можем увеличивать наши формы до бесконечности. Такое поведение
в соответствии с другими программами, такими как Блокнот и Microsoft Paint.
Это поведение определяется в mothed Form.SetBoundsCore (...) с
следующий код:
Размер max = SystemInformation.MaxWindowTrackSize;
if (высота> максимальная высота) {
height = max.Height; }
if (ширина> макс. Ширина) {
width = max.Width; }
[...]
Спасибо, команда UIFx
EDIT2
Поскольку проверка жестко закодирована в Forms.SetBoundsCore, как (используя ILSpy в качестве декомпилятора):
if (this.WindowState == FormWindowState.Normal && (base.Height != height || base.Width != width))
{
Size maxWindowTrackSize = SystemInformation.MaxWindowTrackSize;
if (height > maxWindowTrackSize.Height)
{
height = maxWindowTrackSize.Height;
}
if (width > maxWindowTrackSize.Width)
{
width = maxWindowTrackSize.Width;
}
}
и SetBoundsCore - это защищенная функция, возможно, вы могли бы попробовать извлечь класс из Windows.Forms.Form, переопределить SetBoundsCore и не применять эту проверку в вашей версии SetBoundsCore? Я не пробовал, если это работает, хотя ...