winforms 当ShowToday为False时,MonthCalendar控件具有额外的边框

3gtaxfhh  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(100)

在Winform的MonthCalendar控件中,当我不想显示今天标签时,日历的顶部和底部会出现奇怪的白色边框。
有什么方法可以禁用它吗?

omqzjyyz

omqzjyyz1#

我想我也看到了。日历的大小由名为GetMinReqRect()的私有方法计算。当ShowToday关闭时,它返回的大小过大。此方法在引用源中的注解是:

  • 在内部使用以获取显示MonthCalendar所需的最小大小。这是必要的,因为如果将showToday设置为false,则NativeMethods.MCM_GETMINREQRECT将返回错误的值。*

在我看来,Windows组中的某个人修复了这个错误,却忘记了告诉WF组。毫不奇怪,WF组很难找到。
我没有看到一个明显的解决办法,该方法是私人的。SetBoundsCore()应用大小,没有办法绕过它。你可以把这个bug发布到connect.microsoft.com,但是你会得到“发布到论坛寻求帮助”的拒绝。

zxlwwiss

zxlwwiss2#

我知道这是旧的,但我最近遇到了这个问题,发现这个问题时,我搜索。我想出了一个黑客来解决这个问题。

  • 将MonthCalendar控件放在Panel中。
  • 将MonthCalendar位置设置为0,-8(如果需要,可以调整负数)
  • 大小的小组,以涵盖底部部分,并适合的宽度(对我来说,这是816,489)。

这将剪裁白色空间,使其不显示。

相关问题