Winforms | Ссылка не указывает на экземляр объекта

Ошибка при обращении к словарю в Form из Usercontrol.

Form1.cs

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public Dictionary<string, int> TeamDict = new Dictionary<string, int>();

TestsPage.cs

public partial class TestsPage : UserControl
    {

        public TestsPage()
        {
            InitializeComponent();
        }
        private Form1 mainform = ((Form1)Application.OpenForms["Form1"]);

        ......

        private void button2_Click(object sender, EventArgs e)
        {
            Console.WriteLine(mainform.TeamDict.Count);
        }

An unhandled exception of type 'System.NullReferenceException' occurred in Test3.exe

Additional information: Ссылка на объект не указывает на экземпляр объекта.

Словарь не пуст.


Ответы (1 шт):

Автор решения: Alexander Petrov
private Form1 mainform = ((Form1)Application.OpenForms["Form1"]);

Эта строка кода выполняется при конструировании юзерконтрола. В этот момент форма ещё не открыта. Соответственно, mainForm равно null.

Перенесите код получения формы непосредственно в том место, где она нужна: в событие button2_Click.

→ Ссылка