名称InitializeComponent在当前上下文中不存在

时间:2016-02-19 21:29:44

标签: c# .net winforms

我想学习用c#构建文件,所以我创建了一个Windows窗体应用程序并创建了这个代码/表单。但它似乎没有用。

enter image description here

using System;
using System.Windows.Forms;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

namespace teztie
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "*.exe |*.exe";
            DialogResult result = sfd.ShowDialog();
            if (result == DialogResult.OK)
            {
                build(sfd.FileName, textBox1.Text, textBox2.Text);
            }
        }

        private void build(string output, string msg, string name)
        {
            CompilerParameters p = new CompilerParameters();
            p.GenerateExecutable = true;
            p.ReferencedAssemblies.AddRange(new string[] { "System.dll", "System.Windows.Forms.dll"});
            p.OutputAssembly = output;
            p.CompilerOptions = "/t:winexe";

            string source = Properties.Resources.source;
            string errors = string.Empty;

            source = source.Replace("[MSG]", msg);
            source = source.Replace("[NAME]", name);

            CompilerResults results = new CSharpCodeProvider().CompileAssemblyFromSource(p, source);

            if (results.Errors.Count > 0)
            {
                foreach (CompilerError err in results.Errors)
                {
                    errors += "Error: " + err.ToString() + "\r\n\r\n";
                }
            }
            else
            {
                errors = "Successfully built:\n" + output;
            }

            MessageBox.Show(errors, "Build", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

的Source.txt:

using System;
using System.Windows.Forms;

namespace code
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("[msg]",  "[title]" );
        }
    }
}

但是当我点击编译按钮时,它会给我一个错误。 名称InitializeComponent在当前上下文中不存在。

enter image description here

1 个答案:

答案 0 :(得分:3)

构造函数正在调用名为“InitializeComponent”的方法,但该方法未在您的类中定义。通常,VS设计器使用InitializeComponent来保存在运行时在设计器中应用选择所需的代码。如果您从示例中复制此表单,请向此类添加一个名为“InitializeComponent”的空方法,或者从构造函数中删除此方法调用。