簡體   English   中英

UseCompatibleTextRendering屬性設置為false時,不是由設計者創建的

[英]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中都完全正確,則該窗體的所有標簽和按鈕的顯示效果都會很差。

為了解決這個問題,我不得不遍歷所有的標簽和按鈕和設置UseCompatibleTextRenderingfalseForm.Load事件。 我找不到在DLL或Excel中都無法使用SetCompatibleTextRenderingDefault方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM