我们的软件用户很少在Windows中使用高对比度主题以获取辅助功能,而且这些用户无法在ToolStripMenuItem中看到检查状态,因为检查标记与背景颜色相同:
这是正常的Windows主题:
这与Windows主题形成鲜明对比:
有没有办法让高对比度主题中的检查状态可见而不使用自定义刻度图像作为解决方法?
这个.NET控件中是故意还是错误?因为我可以看到所有默认的.NET控件都正确支持高对比度主题,除了这个。
答案 0 :(得分:0)
我无法找到如何正确地进行检查,尤其是在有图像时。但是找到了在普通主题中对于图像检查状态也很方便的解决方法,因为当每个项目中有图像时检查不容易看到:
tsMain.Renderer = new ToolStripCheckedBoldRenderer();
NgForm.prototype.markAsDirty = function (): void {
let f: NgForm = this;
Util.forEach(f.form.controls, (k, v: AbstractControl) => {
v.markAsDirty(false);
});
};
此渲染器使选中的项目为粗体文本:
所以这个解决方案总比没有好,但还需要更好的解决方案。
答案 1 :(得分:0)
这是一个.NET错误,已在.NET版本4.7.2中修复,如下所述: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.6.2-4.7.2#accessibility-improvements-in-windows-forms-controls
引用:
现在,其Checked属性设置为true的ToolStripMenuItem控件以对比的系统颜色呈现关联的复选标记。以前,选中标记的颜色对比度不够高,在高对比度主题中不可见。注意:Windows 10已更改了一些高对比度系统颜色的值。 Windows Forms Framework基于Win32框架。为了获得最佳体验,请在最新版本的Windows上运行,并通过在测试应用程序中添加app.manifest文件并取消注释以下代码来选择最新的操作系统更改:
<!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />