【问题标题】:How to hide next/preivous button of MonthCalendar control in C#如何在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮
【发布时间】:2012-10-16 02:29:41
【问题描述】:

我有一个项目,我想在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮。我已经搜索了谷歌,但我找不到解决方案。请让我看看。

【问题讨论】:

    标签: c# .net button monthcalendar


    【解决方案1】:

    您可以通过设置控件的 MinDate 和 MaxDate 属性来禁用它们,以编程方式将 MinDate 设置为本月的第一天,并将 MaxDate 设置为本月的最后一天。

    【讨论】:

    • 我从来不知道这可能是可能的。再次感谢@Wanabrutbeer :)
    • +1 可行,但有点不直观。当您无法单击箭头时,您仍然可以单击 Mopnth 名称,它将显示单个月份,如果您再次单击单个年份。最好有一个标签控件,其月份名称覆盖箭头和月份。
    • 没问题 :) 我认为它不是一个完美的解决方案,但它会起作用。唯一的另一种方法是创建一个扩展 MonthCalendar 的自定义控件,并覆盖 OnPaint() 方法,并调整其呈现方式,但我对此并不精通。它可能还需要覆盖其他方法,例如 OnSizeChanged 或其他布局类型事件。
    • @Wanabrutbeer 或者您可以在 MonthCalendar 标题上扩展一个对象,例如 Panel,简单:D
    【解决方案2】:
    monthCalendar1.MinDate = new DateTime(2012,10,1);
    monthCalendar1.MaxDate = new DateTime(2012, 10, 31);
    

    将 MonthCalendar 设置为禁用箭头有点不直观。

    当您无法单击箭头时,您仍然可以单击月份名称,它将显示单个月份,如果您再次单击单个年份,它将显示。

    最好有一个标签控件,其中月份名称覆盖箭头和月份。

    【讨论】:

      【解决方案3】:

      不要忘记添加小时、分钟和秒...对于避免 MaxDate 上的异常特别有用。

      DateTime firstDayInMonth = new DateTime(today.Year, today.Month, 1, 0, 0, 0);
      DateTime lastDayInMonth = new DateTime(today.Year, today.Month, DateTime.DaysInMonth(today.Year, today.Month), 23, 59, 59);
      
      yourCalendar.MinDate = firstDayInMonth;
      yourCalendar.MaxDate = lastDayInMonth;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-13
        相关资源
        最近更新 更多