一、类似提问
c#控件 DateTimePicker如何把下拉日历变大 ,我试过设置CalendarFont,但是无效
在win7下用CalendarFont设置dateTimepicker任何字体效果均无效
二、参考原文
DateTimePicker.CalendarFont Property
从开始使用 Windows Vista,具体取决于主题,设置此属性可能会更改日历的外观。 例如,如果 Windows 设置为使用 Aero 主题,设置此属性无效。 这是因为该日历的更新的版本呈现在运行时派生自当前操作系统主题的外观。 如果你想要使用此属性,并启用日历的早期版本,则可以为应用程序禁用视觉样式。 禁用视觉样式,可能会影响的外观和行为的应用程序中的其他控件。 若要禁用在 Visual Basic 中的视觉样式,请打开项目设计器,并取消选中启用 XP 视觉样式复选框。 若要禁用视觉样式在 C# 中的,打开 Program.cs,并注释掉Application.EnableVisualStyles();。
适用于
.NET Core:3.0 Preview 2
.NET Framework:4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0 1.1
三、总结解决方法
将Process.cs文件的Application.EnableVisualStyles();注释掉。此方法的利弊在于您会失去所有控件的win7、win10风格,但你可以修改日历的字体大小、颜色、背景颜色等。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace RSS_ATDPS_Light
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main());
}
}
}
四、对比效果
1、Win7、Win10效果
2、自定义效果
this.dateTimePicker1.CalendarFont = new Font("宋体",30.0f);
this.dateTimePicker1.CalendarForeColor = System.Drawing.Color.FromArgb (255, 0, 115, 0);