Gewoo
Gewoo

Reputation: 457

The name InitializeComponent does not exist in the current context

I wanted to learn about building files with c# so I created a Windows Forms Application and I created this code/form. But It did not seem to work.
.

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]" );
        }
    }
}

But when I click the compile button it gives me an error. The name InitializeComponent does not exist in the current context.

enter image description here

Upvotes: 2

Views: 10070

Answers (1)

Eric W
Eric W

Reputation: 570

The constructor is calling a method called "InitializeComponent", but that method is not defined in your class. Typically, InitializeComponent is used by the VS designer to hold code needed to apply your selections in the designer at runtime. If you copied this form from an example, either add an empty method called "InitializeComponent" to this class or remove this method call from your constructor.

Upvotes: 3

Related Questions