In the first form create an instance (of it) here like my form1. It must be static and all datatypes you want to access should be public.

//FORM1
public partial class Form1 : Form
{
//Instance of this form
public static Form1 instance;
//For testing
public string myProperty = "TEST";
//Assign instance to this either in the constructor on on load like this
public Form1()
{
InitializeComponent();
instance = this;
}
//or
private void Form1_Load(object sender, EventArgs e)
{
//Assign the instance to this class
instance = this;
}

Then in form2 when calling EventLogger.RareForm rare = new EventLogger.RareForm(); instead of new form do

EventLogger.RareForm rare = EventLogger.RareForm.instance

Or in my case

Form1 frm = Form1.instance;

I then check the property of form 1 FROM form2 like so

Console.WriteLine(frm.myProperty);

Output was "Test"

Any trouble shout.

Email codedump link for C# Specific value passing between forms without new instance