使用VS 2015,C#,Winforms构建的应用程序,使用DateTimePicker Windows控件,在将计算机更新到Windows Creators Update后,文本会出现乱码。
是否有其他人遇到此问题或有任何建议的工作?
答案 0 :(得分:5)
在显示包含DateTimePicker的Form之前,在WinForms应用程序中启用视觉样式。
Application.EnableVisualStyles();
//Form1 contains the DateTimePicker component
Application.Run(new Form1());
答案 1 :(得分:3)
Windows 10的6月累积更新(KB 4022725)包含更新的COMCTL32.DLL,其中包含针对此问题的修复程序。安装更新后,文件版本应为5.82.15063.413。
答案 2 :(得分:2)
你有高DPI显示器吗?即使你没有,也很有可能在这里更新的dpi缩放是错误的。如果是这样,你或许可以修复"这只需在项目清单文件的dpiAware
和dpiAwareness
值中设置一个值,如下所述:
High-DPI Scaling Improvements for Desktop Applications in the Windows 10 Creators Update
我自己还没有必要这样做,所以现在我只能指出你在哪里看,而不是指出你的情况应该是什么样的正确值。
即使这不是您的问题,您也可能需要花几分钟时间检查您的应用是否在高DPI情况下处理得很好。让你的公司为你买一台漂亮的新显示器也是一个不错的借口:)
答案 3 :(得分:2)
启用XP Visual Styles为我修复了它。
答案 4 :(得分:2)
所以Windows 10 1703引入了一些新的挑战,其中包括奇怪的拒绝在DateTimePicker控件中显示日期,除非你勾选"启用XP视觉风格"应用程序的框(或以编程方式执行)。这个调整确实解决了日期再现问题,但现在其他控件,如下拉框,下拉列表文本框和按钮变得扁平和沉闷。不好。我们所需要的是一个真正的解决方案,使得" XP视觉风格"不必要的,或者是Windows Forms编程出路,所以不支持有趣吗?
答案 5 :(得分:1)
我今天也遇到过这个问题。我的datetimepicker是随机渲染的,但从未加入过。我将此作为一种解决方法: 我的环境是VS2015,.net 3.5和winforms 我的设置是Surface Pro 3,带有新的docker和2个外部显示器res 2560x1440,缩放率为100%。 为我的项目添加了app.manifest,因为我之前没有。 将dpiAware添加到app.manifest是这样的系统:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/System</dpiAware>
</windowsSettings>
</application>
我还在表单上将AutoScaleMode设置为None(但是在Inherited中获得了大致相同的结果)。 dpiAware似乎有所帮助(但不是100%稳定)。这在运行已编译的应用程序时有效,但在从Visual Studio进行调试时不起作用。然后我只得到一个句点(。),这是我的日期分隔符号。
sample of datetimepicker after updating to creators update after applying workaround when running compiled exe
如果无法将应用程序更新到.net 4.7,这可能会有所帮助
答案 6 :(得分:0)
因此,我们结束了删除清单文件,现在控件正确呈现。 奇怪的是,只包含一个带有版本和名称的assemblyIdentity标签的新清单文件会导致此窗口控件发生故障。 我意识到,对于其他人来说,删除清单可能不是一种选择,但是,这已经解决了我们的问题。
答案 7 :(得分:0)
我们收到了同样的问题。 VB.NET VS 2012 .NET 4.5。 datetimepicker搞砸了。我也发布了这个
答案 8 :(得分:0)
我在这里和其他地方尝试了大部分建议,包括清单更改,.NET 4.7等。但是,我的设置中需要的另一个更改是增加控件本身的CalendarFont大小。
我系统的默认值为7.875。将其更改为10pt更正了显示问题(将其更改为略低的值可改善显示但未更正显示)。
免责声明:此问题尚未经过深入测试,可能会破坏其他情况。此信息旨在帮助您找到最终解决方案。
答案 9 :(得分:0)
像其他人所建议的那样,将此行添加到您的主要表单中,它对我有用:
Application.EnableVisualStyles()
您还可以取消注释app.manifest
底部的行。这取决于项目。
答案 10 :(得分:0)
此问题的修复程序计划包含在Windows 10的6月累积更新中。
答案 11 :(得分:0)
这是COMCTL32.DLL第5版中实现的日期时间选择器控件中的错误。在不久的将来应该有针对此问题的修复。
COMCTL32.DLL版本6中实现的Date Time Picker控件似乎不受此问题的影响。