Нет ссылки на экземпляр объекта c#

264
18 мая 2017, 08:59
private PanelWithDoubleBuffer[] mArrayOfPanels;
    public HomePage()
    {            
        mArrayOfPanels = new PanelWithDoubleBuffer[] {lvl1, lvl2, lvl3, lvl4, lvl5, lvl6, lvl7, lvl8, lvl9, lvl10 };
        InitializeComponent();
        for (int i = 0; i < Properties.Settings.Default.GameLevel + 1; i++)
        {
            mArrayOfPanels[i].Enabled = true;
        }
    }

На форме есть 10 панелей, к ним нужно обращаться. Для удобства помещаю их в массив, но при обращении выдает исключение nullpointer. Если делаю =new ...перед действием, то задаю новую ссылку и уже не могу обратиться. Где инициализировать и как ?)

Answer 1

Дело в том, что привязка полей типа lvl1 к реальным контролам происходит как часть InitializeComponent. До вызова InitializeComponent все эти поля имеют нулевое значение.

Попробуйте так:

public HomePage()
{            
    InitializeComponent();
    mArrayOfPanels = new PanelWithDoubleBuffer[]
    {
        lvl1, lvl2, lvl3, lvl4, lvl5, lvl6, lvl7, lvl8, lvl9, lvl10
    };
    for (int i = 0; i < Properties.Settings.Default.GameLevel + 1; i++)
    {
        mArrayOfPanels[i].Enabled = true;
    }
}
READ ALSO
Распараллеливание вычислений

Распараллеливание вычислений

Есть метод, который возводит число в степень:

259
Как код на в софте сделать закрытым

Как код на в софте сделать закрытым

Как можно сделать код закрытым ? Ну чтобы его нельзя было посмотреть, c# - через рефлектор 8x, 9

231
Задача о ранце. Как сократить память?

Задача о ранце. Как сократить память?

Доброго времени суток! Получил задание решить классическую задачу о ранцеЕсть N предметов, у каждого предмета есть вес и цена, есть ранец,...

321