У меня была такая же проблема, и я нашел обходной путь:
Кажется, что размеры элемента управления MonthCalendar
обновляются правильно, когда он отображается (как в форме) во время выполнения.
Используйте, например, событие Shown
формы, чтобы узнать, когда обновляются размеры.
Вы также можете установить свойство AutoSize
формы в true
и AutoSizeMode
в GrowAndShrink
, чтобы сделатьформа автоматически соответствует элементу управления MonthCalendar
.
Обновление:
Для получения более подробной информации попробуйте следующий пример:
Поместите элемент управления MonthCalendar в форму, подобную этой:
В формуле Показано Событие добавьте это:
public static int CalenderWidth = 0, CalenderHeight = 0;
private void Form1_Shown(object sender, EventArgs e)
{
CalenderWidth = monthCalendar1.Width;
CalenderHeight = monthCalendar1.Height;
MessageBox.Show("MonthControl width: " + CalenderWidth.ToString() +
", height: " + CalenderHeight.ToString());
}
Когда программа будет запущена, вы увидите окно сообщения, показывающее правильные размеры.Ширина и Высота также помещаются в две переменные, которые вы можете использовать в любом месте вашей программы (я знаю, что это очень быстро и грязно ;-) Конечно, вы можете опустить окно сообщений, если оно вам не нужно.
Чтобы убедиться, что это действительно работает, попробуйте изменить настройки региона в Windows: измените формат, например, на датский.Запустите программу еще раз, и вы увидите, что ширина стала меньше, поскольку датский элемент управления MonthCalender меньше.
Относительно свойств AutoSize
и AutoSizeMode
они могут быть использованы для адаптации размера формы кразмер элемента управления MonthCalender.Сделайте это: Измените два свойства в форме на это:
Теперь запустите программу, и вы увидите, что размер формы изменяется автоматическив зависимости от размера элемента управления MonthCalender:
Вот и все!(не забудьте переключить настройку формата региона обратно на исходную)
;-) Дейв