http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.setcompatibletextrenderingdefault(VS.80).aspx
引經據典:MSDN 如是說,
Application.SetCompatibleTextRenderingDefault 方法
將某些控制項上定義的 UseCompatibleTextRendering 屬性設定為應用程式範圍內的預設值。
參數
defaultValue
用於新控制項的預設值。如果為 true,則支援 UseCompatibleTextRendering 的新控制項將 GDI+ 用於文本呈現;如果為 false,則新控制項使用 GDI+。
異常
| 異常類型 |
條件 |
InvalidOperationException |
您只能在 Windows 表單應用程式建立第一個視窗之前調用此方法。 |
備忘
某些 Windows 表單控制項可以使用 GDI 圖形庫或更新的 GDI+ 庫來呈現其文本。由於 GDI+ 的效能和本地化問題而做出這樣的更改。預設情況下,將支援 UseCompatibleTextRendering 屬性的現有控制項設定為 true 以獲得向後相容性,但 Visual Studio 等環境中的所有新控制項都將該屬性設定為 false。要切換新控制項的預設文本呈現時,請使用 SetCompatibleTextRenderingDefault。
如果在另一個應用程式中承載 Windows 表單代碼,例如 Internet Explorer,切勿調用該方法。僅在獨立的 Windows 表單應用程式中調用該方法。
去掉 //Application.SetCompatibleTextRenderingDefault(false); 則無異常。 代碼如下:
Code
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
FormLogin login = new FormLogin();
if(DialogResult.OK != login.ShowDialog()) return;
Control instance;
if (login.IsAuthorised == AuthoriseType.QualityChecker)
instance = CheckingControl.Instance;
else
instance = ManagerControl.ManagerInstance;
Application.Run(new FormMaster(instance));
}
問題是解決了,但是根源似乎沒有清澈,請高手指點迷津。