[英]When a user control has Browsable false on public property, why does designer set it to null when added to a form?
[英]UseCompatibleTextRendering property not created by designer when it is set to false
我不想使用兼容的文本呈現,但是我不想使用
Application.SetCompatibleTextRenderingDefault(false);
自然,我以為我要做的就是將每個標簽的UseCompatibleTextRendering屬性設置為false。 但是,如果UseCompatibleTextRendering設置為true,則窗體設計器顯然只會生成代碼以設置屬性。
我認為沒問題,這必須意味着UseCompatibleTextRendering默認情況下被初始化為false。 但是,當我啟動表單時,瞧瞧,我看到了丑陋的CompatibleTextRendering。 所以,一個問題:
1)為什么地球上不是設計師添加代碼UseCompatibleTextRendering當我把它設置為false,這是當我把它設置為true,如果默認是真的嗎?
設計器不會添加用於將UseCompatibleTextRendering
設置為false
代碼,因為false
是默認值。
那么,為什么控件默認情況下使用兼容的文本呈現,如果該屬性的默認值為false
,那似乎是...奇怪? 好吧, Application.SetCompatibleTextRenderingDefault
方法將給定值分配給Control類中的靜態字段,並且Control類的靜態構造函數將此字段初始化為true
。
因此,刪除行Application.SetCompatibleTextRenderingDefault(false);
將導致應用程序使用兼容的文本呈現,這與您根據UseCompatibleTextRendering
屬性的默認值可能會想到的相反。
我可以看到的唯一合理的解決方案是,將自動生成的調用保留在Application.SetCompatibleTextRenderingDefault
所在的位置。
該問題發生在我編寫供Microsoft Excel使用的Com-Interop-DLL 中 。
DLL是用VB.NET編寫的,並且包含從Excel內部顯示的表單 。
現在, Excel.Application默認將UseCompatibleTextRendering
設置為true
。 因此,如果DLL嵌入到Excel (GDI + -Graphics-Class)中,但在任何.Net-Windows Application中都完全正確,則該窗體的所有標簽和按鈕的顯示效果都會很差。
為了解決這個問題,我不得不遍歷所有的標簽和按鈕和設置UseCompatibleTextRendering
以false
的Form.Load
事件。 我找不到在DLL或Excel中都無法使用SetCompatibleTextRenderingDefault
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.