我有一個簡單的Windows應用程序,其中一個動態的Win窗體被創建並與工具箱一起顯示。 用戶在這個動態創建的表單上拖放控件並相應地寫入代碼。 下面是不是完整的代碼,但我面臨的問題片。我試圖編譯在運行時由用戶編寫的代碼,但它給了我錯誤「在表格0 - >‘的InitializeComponent’不存在於當前上下文線路存在的名稱(12)錯誤:CS0103」Winform的動態代碼編譯給C#中的錯誤#
// small piece of code
string SecondLine = @"public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}";
Form1 frm =new Form1();
frm.textBox1.Text = "using System;" + Environment.NewLine
+ "using System.IO;" + Environment.NewLine + "using System.Drawing;" + Environment.NewLine + "using System.Windows.Forms;" + Environment.NewLine + Environment.NewLine + "namespace MiniCompiler{" + Environment.NewLine + Environment.NewLine;
frm.textBox1.Text = frm.textBox1.Text + SecondLine.ToString();
frm.textBox1.Text = frm.textBox1.Text + Environment.NewLine + Environment.NewLine + "static class Program{" + Environment.NewLine + " [STAThread] " + Environment.NewLine + "static void Main()" + "{" + Environment.NewLine;
string firstLine = "Application.EnableVisualStyles(); " + Environment.NewLine + "Application.SetCompatibleTextRenderingDefault(false);" + Environment.NewLine + "Application.Run(new Form1());";
frm.textBox1.Text = frm.textBox1.Text + Environment.NewLine + firstLine;
frm.textBox1.Text = frm.textBox1.Text.ToString() + Environment.NewLine + "}" ;
//編譯代碼
CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerResults result = compiler.CompileAssemblyFromSource(param,code);
我真的不知道什麼可能是錯在這裏編譯的Winform。
謝謝,
你是否包含聲明InitializeComponent的部分? – 2014-09-25 09:34:15
@ Selman22 - 不..但Form1是dyamically生成..所以我如何包括它。 – user1291401 2014-09-25 09:35:48
你把工具箱中的控件.. ..動態創建窗體。 – 2014-09-25 09:38:55