我遇到了同样的问题并找到了解决方法:
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 中的区域设置:将格式更改为例如丹麦语。再次运行程序,您会看到 Width 变小了,因为丹麦 MonthCalender 控件变小了。
关于AutoSize 和AutoSizeMode 属性,它们可用于使表单的大小适应MonthCalender 控件的大小。做这个:
将form中的两个属性改成这样:
现在运行程序,你会看到表单的大小会根据 MonthCalender 控件的大小自动改变:
就是这样! (记得将您的区域格式设置切换回原来的设置)
;-) 戴夫