(VS2005)
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);            loadBox.ShowDialog();//loadBox我自己设计的窗口类            ................................            loadBox.Close();            Application.Run(new Form1());
        }//end fun
  运行到红色部分时出现异常:  在应用程序中创建第一个 IWin32Window 对象之前,必须调用 SetCompatibleTextRenderingDefault。  请问是什么原因?

解决方案 »

  1.   

     SetCompatibleTextRenderingDefault的作用
    1.在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+   ,   还是旧的GDI) 
    true使用GDI+方式显示文本, 
    false使用GDI方式显示文本. 
    2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法. 
    3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常. 
      

  2.   

    某些 Windows 窗体控件可以使用 GDI 图形库或更新的 GDI+ 库来呈现其文本。由于 GDI+ 的性能和本地化问题而做出这样的更改。默认情况下,将支持 UseCompatibleTextRendering 属性的现有控件设置为 true 以获得向后兼容性,但 Visual Studio 等环境中的所有新控件都将该属性设置为 false。要切换新控件的默认文本呈现时,请使用 SetCompatibleTextRenderingDefault。 如果在另一个应用程序中承载 Windows 窗体代码,例如 Internet Explorer,切勿调用该方法。仅在独立的 Windows 窗体应用程序中调用该方法。  
    去掉 //Application.SetCompatibleTextRenderingDefault(false);   
     
     [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));
            }
      

  3.   

    去掉后,主窗口出不来,貌似loadBox.Close(); 不起作用
      

  4.   

    汗!找到原因了loadBox.ShowDialog();--- 这后面代码当然不会执行,应该改成loadBox.Show();