Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Проблема с ДатаГрид при открытии дочерней формы


Автор: sulyco 15.8.2014, 14:27
Доброго дня!
Ситуация:
Дочерняя форма открывается при выборе пункта меню в родительской форме и содержит датагрид, заполняющийся определенным образом из события выбора. При выборе последовательно нескольких пунктов меню, соответственно, открываются и несколько форм с датагридом. Оно все так и происходит, пока не возникает нужда закрыть любую из открытых "дочерей". При попытке открыть очередную форму после закрытия выскакивает исключение "System.InvalidOperationException: Невозможно добавить строки в элемент управления DataGridView, в котором нет столбцов. Сначала необходимо добавить столбцы." Хотя, казалось бы ничего не изменилось - инициализация грида столбцами так и находится выше заполняющего грид события

Код

MarketForm mf = new MarketForm();
...
mf.c_Grid.InitGrid();
с_menuTree.evNewMarket += new BfControls.MenuTree.NewMarketHandler(mf.c_Grid.OnNewMarket);
...

mf.Show();

Предполагаю, что при закрытии формы остаются какие-то хвосты не подобранные. Но что определенно происходит - теряюсь. Возможно, надо полностью уничтожать экземпляр закрытой формы.
Буду рад содействию в решении проблемы.
Заранее благодарен.

Автор: jonie 15.8.2014, 16:18
Цитата

с_menuTree.evNewMarket += new BfControls.MenuTree.NewMarketHandler(mf.c_Grid.OnNewMarket);

а отписывайетесь от событий при закрытии?)

Автор: sulyco 15.8.2014, 16:38
Я бы и рад отписаться от событий при закрытии формы. Только пока не понимаю как это сделать правильно. Ведь событие выбора - оно в контроле основной формы и дочерняя на него повлиять прямо не может. Думаю , что при открытии формы надо передать туда меню как экземпляр класса, принадлежащий новой форме, а уж из него при закрытии отписываться. Нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)