我不希望使用兼容的文本呈现,但我不想使用
Application.SetCompatibleTextRenderingDefault(false);
当然,我认为我所要做的就是将每个标签的UseCompatibleTextRendering属性设置为false。但是,如果UseCompatibleTextRendering设置为true,则表单设计器显然只生成用于设置属性的代码。
没问题,我想,这必定意味着默认情况下UseCompatibleTextRendering被初始化为false。然而,当我启动我的表格时,我看到丑陋的CompatibleTextRendering。所以,一个问题:
1)为什么设计师在我将其设置为false时添加UseCompatibleTextRendering的代码并且当我将其设置为true时是,如果默认值为true,那么该设计师是不是?
答案 0 :(得分:5)
设计人员不会添加用于将UseCompatibleTextRendering
设置为false
的代码,因为false
是默认值。
那么,为什么默认情况下控件使用兼容的文本呈现,如果属性的默认值是false
,那似乎是......奇怪的?好吧,Application.SetCompatibleTextRenderingDefault
方法将给定值分配给Control类中的静态字段,Control类的静态构造函数将此字段初始化为true
。
因此,删除行Application.SetCompatibleTextRenderingDefault(false);
将导致应用程序使用兼容的文本呈现,这与您根据UseCompatibleTextRendering
属性的默认值所想的相反。
我能看到的唯一合理的解决方案就是将自动生成的调用留给Application.SetCompatibleTextRenderingDefault
。
答案 1 :(得分:3)
我在 Microsoft Excel 中编写的 Com-Interop-DLL 中出现此问题。
DLL是用 VB.NET 编写的,包含一个从 Excel 中显示的表单。
现在, Excel.Application 默认将UseCompatibleTextRendering
设置为true
。因此,如果DLL嵌入在 Excel (GDI + -Graphics-Class)中,但完全正确地从任何 .Net-Windows应用程序中嵌入,则表单的所有标签和按钮都会呈现不佳。
要解决此问题,我必须遍历所有标签和按钮,并在UseCompatibleTextRendering
事件上将false
设置为Form.Load
。
我发现无法在DLL中或Excel中使用SetCompatibleTextRenderingDefault
。