Q:

Static referenced in another .cs file

I am overlooking something simple I think.  I have a form with a checkbox.  I need to know if the checkbox is checked in a different cs file/class to know whether to make a column header Option1 or Option2.
Form1 (Public partial class) code:
public bool Checked
{
    get 
    { 
        return checkBox1.Checked; 
    }   
}

In my Export1 class I have private void CreateCell1 that takes in the data to be exported (creating an excel file from a datatable).  The section of code I can't get to work is:
if (Form1.Checked.Equals("true"))
{
    newRow["Option1"] = date2;
}
else
{
    newRow["Option2"] = date2;
}

I am getting -Error 1   An object reference is required for the non-static field, method, or property 'Matrix1.Form1.Checked.get'
What did I overlook?  

A:

Well, the problem here is exactly what the compiler is telling you. You need an object reference in order to access the property. 
Allow me to explain.
In C#, by default, class members (fields, methods, properties, etc) are instance members. This means that they are tied to the instance of the class they are a part of. This enables behavior like the following:
public class Dog
{
    public int Age { get; set; }
}

public class Program
{
    public static void Main()
    {
        var dog1 = new Dog { Age: 3 };
        var dog2 = new Dog { Age: 5 };
    }
}

The two instances of Dog both have the property Age, however the value is tied to that instance of Dog, meaning that they can be different for each one.
In C#, as with a lot of other languages, there are things called static members of classes. When a class member is declared static, then that member is no longer tied to an instance of the class it is a part of. This means that I can do something like the following:
public class Foo
{
    public static string bar = "bar";
}

public class Program
{
    public static void Main()
    {
        Console.WriteLine(Foo.bar);
    }
}

The bar field of the Foo class is declared static. This means that it is the same for all instances of Foo. In fact, we don't even have to initialize a new instance of Foo to access it.
The problem you are facing here is that, while Form1 is not a static class and Checked is not a static property, you are treating it as such. In order for what you are trying to do to work, you need to create an instance of Form1 and access that instance's Checked property.
Depending on how your program is structured, there are many ways of doing this. If Form1 is created in the scope where you are trying to access Checked, then this will be straightforward. If Form1 is what spawns the new scope, then common practice is to pass a reference to it in the constructor.
For example, if Form1 creates a new Form2 then we do the following:
public class Form2 : Form
{
    private Form1 parent;
    public Form2(Form1 parent)
    {
        this.parent = parent;
        InitializeComponent();
    }
}

And then you can access parent throughout Form2. Of course, depending on the structure of your program, the exact implementation will be different. However, the general pattern is the same. Pass the reference to Form1, from the scope it was created in, to the new class, and then access it from there.

