I'm trying to write my first program in C# without the use of a tutorial. To ensure that I adopt from the start good coding practices, I want to create each class in an different .cs file. However, I'm running into some troubles when trying to access the elements of the program in such an .cs file.

For example, I have an Form1.cs with an Label and a Start button. When clicking on the start button, a text should appear in the Label. So:

In **Form1.cs** I have:

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

        private void startButton_Click(object sender, EventArgs e)
        {
            WriteToLabel message = new WriteToLabel();
            message.WelcomeMessage();
        }
    }
}

```

And in my separate **WriteToLabel.cs** file:

```
namespace TestProgram
{
    public class WriteToLabel
    {
        public void WelcomeMessage()
        {
            Form1 myForm = new Form1();
            //myForm..  --> myForm doesn't have an 'outputLabel'?
            outputLabel.Text = "Welcome!"; // This returns an error: 'The name outputLabel does not exits in the current context'.
        }
    }
}

```

*'outputLabel' is the (Name) I've given the label, and this is in accordance to the name in Form1.Designer.cs.
Both files are using the same components such as 'using System';.*

However, from my WriteToLabel.cs file I can't seem to access the Form which holds my program. I did manage to succeed to create different .cs files in an Console Application, which only added to my confusion. So, I have two questions:

**First**, how can I access the Form from a *separate* class (i.e. not an partial class) in a *separate* file?
**Second**, is this the good way to do it, or is it inefficient to create multiple instances of different classes?

Any thoughts or ideas are highly welcome,

Regards,