【问题标题】:Calculate size for a form containing a control that may vary in size?计算包含大小可能不同的控件的表单的大小?
【发布时间】:2013-03-22 15:21:10
【问题描述】:

我需要在单独的对话框中显示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;
}

我无法找到自动调整表单大小以更好地适应日历的方法,如果您提供有关如何改进这一点的任何提示,我将不胜感激。

【问题讨论】:

    标签: c# .net winforms resize themes


    【解决方案1】:

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

    【讨论】:

    • 这很好用,谢谢。注意:我也必须将内部表单(日历)的边距(和填充)设置为零,否则在外部表单内部仍然会有一些空间。
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2021-08-25
    • 2014-07-28
    • 2018-01-17
    • 2022-06-16
    相关资源
    最近更新 更多