Well you could add a static class to hold character creation in and all form can access this data without having a reference. For example
public static class CharacterCollection
{
public static Dictionary<string, Character> Characters = new Dictionary<string, Character>();
private static string _currentCharacter = string.Empty;
static CharacterCollection()
{
}
public static Character SelectCurrent()
{
if (Characters.ContainsKey(_currentCharacter) == true)
{
return Characters[_currentCharacter];
}
return null;
}
public static void Add(Character character)
{
if(Characters.ContainsKey(character.Name) == false)
{
Characters.Add(character.Name, character);
}
else
{
Characters[character.Name] = character;
}
}
public static bool SetCurrent(string name)
{
if (Characters.ContainsKey(name) == true)
{
_currentCharacter = name;
return true;
}
return false;
}
}
Usage:
FormA:
Character newPlayer = new Character("PlayerA", 1, 1);
CharacterCollection.Add(newPlayer);
CharacterCollection.SetCurrent(newPlayer.Name);
FormB
Character player = CharacterCollection.SelectCurrent();
This will give you the ability to navigate multiple forms without having to pass a reference to each form or the game, just grab it out of the collection.