我需要在单独的对话框中显示MonthCalendar
,如下所示:
问题是这个日历的显示取决于运行应用程序的系统,导致这种变化(来自同一个应用程序,在不同的PC上):
据我了解,这取决于应用程序正在运行的视觉样式或主题。问题是,如何计算日历需要放置的表单的适当大小,或者以其他方式使这些表格在具有不同主题的几个系统上显得优雅?
我对目前的代码感到很满意,该代码将日历放在一个表格(container
)中,该表格的大小(硬编码)适合一个特定的主题(第一张图片):
private static Form SetUpCalendar()
{
var calendar = new MonthCalendar
{
MaxSelectionCount = maxSelectionCount,
BackColor = SystemColors.Info,
CalendarDimensions = new Size(1, 1),
// (..etc...)
};
var container = new Form
{
FormBorderStyle = FormBorderStyle.FixedDialog,
Size = new Size(calendar.Width + 74, calendar.Height + 47)
};
container.Controls.AddRange(new Control[] {calendar});
return container;
}
我无法找到一种方法来自动更好地调整表单的大小,并且会对如何改进它的任何提示表示感谢。
答案 0 :(得分:4)
为什么不将表单的 AutoSize 属性设置为true,将 AutoSizeMode 设置为 GrowAndShrink ?如果要消除控件周围的空间,还需要设置margin属性。