I'm struggling to get a class from a different form without making it static, here's what I want to do:
//First form
public partial class SetupScreen : Form
{
Control myObject;
public Battleship myBattleship;
public SetupScreen()
{
InitializeComponent();
//Create Class Object
myBattleship = new Battleship();
}
}
//Launch second form
public partial class GameScreen : Form
{
Control myObject;
Battleship myBattleship;
Battleship fredBattleship;
public GameScreen()
{
InitializeComponent();
//Get the class
myBattleship = SetupScreen.myBattleship;
}
}
I keep getting the error "an object reference is required for the non-static field, method or property"
I want the class to be accessible by the whole form, not just a single method therefore I don't want to pass it through each time because this is a hassle
I don't want to make the class static since it cannot be erased, how would I go about doing this?
You are getting this error because you are trying to access a non-static field in a static manner.
Where do you instantiate SetupScreen and GameScreen?
Why not something like this:
Of course, this will only work if you can instantiate GameScreen in SetupScreen. I could give you a better answer if you tell me where/how you are "launching" these forms.
you must use singleton pattern. so your code must be like this:
and first of all, in the start of your app, create an instant of SetupScreen form.
now you can access to SetupScreen in anywhere.
You could pass a reference of your first form to your second form, or (what I would do), create a public
Battleship
property on your second form and pass your object that way.