Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winform的动态代码编译在C中出现错误#_C#_.net_Winforms_Dynamic Compilation - Fatal编程技术网

C# winform的动态代码编译在C中出现错误#

C# winform的动态代码编译在C中出现错误#,c#,.net,winforms,dynamic-compilation,C#,.net,Winforms,Dynamic Compilation,我有一个简单的windows应用程序,其中创建了一个动态赢表单,并与工具箱一起显示。 用户在这个动态创建的表单上拖放控件,并相应地编写代码。 下面不是完整的代码,而是我面临的问题。我试图编译用户在运行时编写的代码,但它在表单0中给我错误“”->当前上下文行中不存在名称“InitializeComponent”(12)错误:CS0103“ //编译代码 CSharpCodeProvider provider = new CSharpCodeProvider(); ICodeCompiler c

我有一个简单的windows应用程序,其中创建了一个动态赢表单,并与工具箱一起显示。 用户在这个动态创建的表单上拖放控件,并相应地编写代码。 下面不是完整的代码,而是我面临的问题。我试图编译用户在运行时编写的代码,但它在表单0中给我错误“”->当前上下文行中不存在名称“InitializeComponent”(12)错误:CS0103“

//编译代码

 CSharpCodeProvider provider = new CSharpCodeProvider();
 ICodeCompiler compiler = provider.CreateCompiler();
 CompilerResults result = compiler.CompileAssemblyFromSource(param,code); 
我真的不确定在这里编译Winform会出什么问题


谢谢,

我认为错误消息是正确的。我看不到在Form1类的构造函数中调用的InitializeComponent()方法的定义位置

因为表单是作为分部类生成的,所以可能有(事实上,默认情况下有)多个文件,其中包含该类的成员。默认情况下,您有两个文件。在您的例子中,Form1.cs和Form1.Designer.cs。两者一起描述了Form1中的类

未继承InitializeComponent方法。它是在同一个类中定义的,只是在另一个文件中

    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Text = "Form1";
    }
您可以将该方法从Form1类的另一部分复制到第二行字符串中。我想,这样应该行得通


您是否包括声明InitializeComponent的部分?@Selman22-否。。但Form1是动态生成的。。那么我该如何将其包括在内。你是否放置控件。。从工具箱中..在动态创建的表单上。您并没有完成winforms designer所做的全部工作。删除
InitializeComponent()
call(它由设计器自动生成,但您没有使用),然后自己执行初始化:设置表单属性、添加控件、设置控件属性、添加事件处理程序、处理组件。用户拖放此表单上的控件-您基本上是自己制作设计器,那么深入研究设计器代码是值得的。@Sinatr-也将尝试此方法。.它成功编译。。。但再次打开一个新表单。@user1291401您希望发生什么?
    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Text = "Form1";
    }