计算包含可能大小不同的控件的表单的大小?

时间:2013-03-22 15:21:11

标签: c# .net winforms resize themes

我需要在单独的对话框中显示MonthCalendar,如下所示:

enter image description here

问题是这个日历的显示取决于运行应用程序的系统,导致这种变化(来自同一个应用程序,在不同的PC上):

enter image description here

据我了解,这取决于应用程序正在运行的视觉样式或主题。问题是,如何计算日历需要放置的表单的适当大小,或者以其他方式使这些表格在具有不同主题的几个系统上显得优雅?

我对目前的代码感到很满意,该代码将日历放在一个表格(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;
}

我无法找到一种方法来自动更好地调整表单的大小,并且会对如何改进它的任何提示表示感谢。

1 个答案:

答案 0 :(得分:4)

为什么不将表单的 AutoSize 属性设置为true,将 AutoSizeMode 设置为 GrowAndShrink ?如果要消除控件周围的空间,还需要设置margin属性。