C# 计算包含大小可能不同的控件的窗体的大小?

C# 计算包含大小可能不同的控件的窗体的大小?,c#,.net,winforms,resize,themes,C#,.net,Winforms,Resize,Themes,我需要在单独的对话框中显示一个MonthCalendar,如下所示: 问题在于,此日历的显示取决于应用程序运行的系统,导致类似的变化(来自同一应用程序,在不同的PC上): 据我所知,这取决于应用程序运行时的视觉样式或主题。问题是,我如何计算日历需要放入的表单的适当大小,或者以其他方式使其在具有不同主题的多个系统上看起来优雅 我对当前的代码并不满意,它将日历放置在一个表单(容器)中,该表单的大小(硬编码)适合一个特定主题(第一张图片): 我还没有找到一种方法来自动调整表单的大小以更好地适应日历

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

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

据我所知,这取决于应用程序运行时的视觉样式或主题。问题是,我如何计算日历需要放入的表单的适当大小,或者以其他方式使其在具有不同主题的多个系统上看起来优雅

我对当前的代码并不满意,它将日历放置在一个表单(
容器
)中,该表单的大小(硬编码)适合一个特定主题(第一张图片):


我还没有找到一种方法来自动调整表单的大小以更好地适应日历,如果有任何关于如何改进的建议,我将不胜感激

为什么不将窗体的自动调整大小属性设置为true,并将自动调整大小属性设置为增长和收缩?如果要消除控件周围的空格,还需要设置margin属性。

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

这很有效,谢谢。注意:对于内部表单(日历),我也必须将边距(和填充)设置为零,否则在外部表单中,它周围仍然会有一些空间。这很有效,谢谢。注意:对于内部表单(日历),我也必须将边距(和填充)设置为零,否则在外部表单中,它周围仍然会有一些空间。
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;
}