MonthCalendar контролирует размер изменений в разных системах, как адаптировать форму для размещения?

Я сделал простой диалог выбора даты, используя C# WinForms и элемент управления MonthCalendar. На изображениях ниже показано такое же диалоговое окно в Windows 7 и 10. Как видно, MonthCalendar намного больше и перекрывает кнопки.

Виндовс 7

Windows 10

Это неожиданно, поскольку элементы управления WinForm обычно имеют фиксированные размеры. Мне нужен способ изменить размер окна и переместить кнопки относительно MonthCalendar.

Вопрос: Как лучше поступить в подобных ситуациях, желательно автоматически?


person rlv-dan    schedule 17.10.2018    source источник


Ответы (1)


А TableLayoutPanel. Два столбца, три строки. Закрепите его на форме. Поместите календарь в левый столбец, охватывающий все 3 строки. Поместите кнопки в правом столбце в строки 1 и 2. Установите режим размера столбца 1 на автоматический размер. Вам также может понадобиться настроить автоматический размер столбца 2, а затем настроить панель tablelayoutpanel на автоматический размер, а затем, наконец, автоматический размер формы (убедитесь, что вы разрешили ей увеличиваться и уменьшаться).

person Handbag Crab    schedule 17.10.2018
comment
Это кажется правильным решением, но я так и не смог заставить его работать. С TableLayoutPanel непросто работать. В моей простой форме я передвигал элементы управления вручную. - person rlv-dan; 18.10.2018
comment
Это мое решение, которое перемещает кнопки и расширяет форму: buttonOk.Left = monthCalendar.Left + monthCalendar.Width; buttonCancel.Left = monthCalendar.Left + monthCalendar.Width; this.Width = buttonCancel.Left + buttonCancel.Width + monthCalendar.Left; - person rlv-dan; 18.10.2018