So I'm working on a project and have hit a logic roadblock in my design of it.
Currently I have several forms, and classes. I have one form MainForm handles the main window of my program. Inside this class, I have a static ArrayList of type "Room".
public partial class MainForm : Form
{
public static ArrayList rooms = new ArrayList();
...
}
On load, MainForm will read in a list of items from a text file, and create "Room" objects and store them in an arraylist.
public void loadSettings()
{
string path = System.IO.Path.Combine(Environment.CurrentDirectory, "config/Rooms.cfg");
string currentLine;
StreamReader read = new StreamReader(path);
while ((currentLine = read.ReadLine()) != null)
{
String[] parts = currentLine.Split(';');
string name = parts[0];
string video = parts[1];
string isLogged = parts[2];
string notify = parts[3];
rooms.Add(new Room(name, video, isLogged, notify));
}
The problem I am running into, is later on, I want to be able to manipulate this rooms array from another form, duely named "AddRoom", so I have done something like this:
//In AddRoom.cs
MainForm.rooms.Add(new Room(textBoxRoomName.Text));
MainForm.SaveAllRooms();
//In MainForm.cs
public static void SaveAllRooms()
{
TextWriter tw = new StreamWriter(Environment.CurrentDirectory + "/config/Rooms.cfg");
foreach(Room room in rooms)
{
tw.WriteLine(room.name + ";" + room.videoFeed + ";" + room.isLogged + ";" + room.notify);
}
tw.Close();
populateListOfRooms(); //THIS IS WHERE MY LOGICAL ISSUE IS
}
The problem is, in populateListOfRooms() I want to save the name of each Room in the arraylist rooms to an item in a Combobox.
Because of the fact that SaveAllRooms() and Arraylist rooms are both static, I can not access the specific instance of MainForm
in order to add items to the Combobox.
So I guess essentially my question is, since I can not use a static Arraylist object to store the room data, how can I go about storing these objects in a manner that is accessible from other forms, yet still allows me to access objects in the MainForm (like comboboxes).
I know this post was probably confusing, and definitely longer than it probably need have been, but it's late and so I apologize for any confusion.