RT

解决方案 »

  1.   

    你希望TextBox什么事件触发后再创建窗体?
    手工创建窗体的代码:Form frm1=new Form();
    frm1.show();
      

  2.   

    可能我没表述清楚。我是想去反射textbox里的代码创建窗体。
      

  3.   


    Microsoft.CSharp.CSharpCodeProvider   provider   =   new   Microsoft.CSharp.CSharpCodeProvider();   
        
                              System.CodeDom.Compiler.ICodeCompiler   comp   =   provider.CreateCompiler();   
        
                              System.CodeDom.Compiler.CompilerParameters   cp   =   new   System.CodeDom.Compiler.CompilerParameters();   
        
                              cp.ReferencedAssemblies.Add("system.dll")     ;   
                              cp.ReferencedAssemblies.Add("system.data.dll")     ;   
                              cp.ReferencedAssemblies.Add("system.xml.dll")     ;   
                              cp.GenerateExecutable     =     false     ;   
                              cp.GenerateInMemory     =     true     ;   
        
                              string   code   =   @"using   System;       
                                                              using   System.Data;           
                                                              using   System.Xml;                 
                                                              public     class   Judgement   
                                                              {                     
                                                                        public     object     GetJude()   
                                                                        {           
                                                                                  return     ("     +     expression     +     @");           
                                                                        }           
                                                              }"   ;     
                              System.CodeDom.Compiler.CompilerResults   cr   =   comp.CompileAssemblyFromSource(cp,code);   
                              System.Diagnostics.Debug.Write(code);   
        
                              if(cr.Errors.HasErrors)   
                              {   
                                      System.Text.StringBuilder   errorMsg   =   new   System.Text.StringBuilder();   
                                      
                                      foreach(System.CodeDom.Compiler.CompilerError   err   in   cr.Errors)   
                                      {   
                                              errorMsg.Append(err.ErrorText   );   
                                      }   
                                      System.Diagnostics.Debug.WriteLine(errorMsg.ToString());   
                                      
                                      throw   new   System.Exception("编译错误:     "     +     errorMsg.ToString());     
                                      //return   false;   
                              }   
                              else   
                              {   
                                      System.Reflection.Assembly     tmp   =   cr.CompiledAssembly;   
                                      object   _Compiled     =     tmp.CreateInstance("Judgement");   
                                      System.Reflection.MethodInfo   mi   =   _Compiled.GetType().GetMethod("GetJude");     
                                        
                                      return   mi.Invoke(_Compiled,null);   
                              }