2
Answers

Forms leaving scope?

dbailiff

dbailiff

20y
1.9k
1
I am programming an MDI application that allows a user to have multiple views of data. I accomplish this by using a datagrid in a MDI child form to the main form. The user can then have multiple child forms open each having its own data grid. Users began to report lost data when trying to update when multiple forms were open. Running through the debugger I discovered that the datagrid objects were being disposed even though a datagrid form was still open! I am wondering if my code is inherently flawed somehow and my child forms are out of scope? Here's a brief example: in frmMain()... private void mnuViewFinalPhrases_Click(object sender, System.EventArgs e) { string [] sfilter = {"status = 'F'"}; bool [] bcolumns = {true, true, true, true, true, true, false, false, false, false}; frmPhraseView frmFinalView = new frmPhraseView("Final Phrases", sfilter, bcolumns); frmFinalView.MdiParent = clsGlobal.g_frmMain; frmFinalView.Show(); } I've setup a global class to instantiate a static global form so that I could always refer back to the main from (clsGlogal.g_frmMain) from anywhere in the program. frmPhraseView contains my datagrid. I can create multiple forms this way by creating a new form every time the user clicks this menu item. I guess my question is this: Once the code execution leaves this member function, that is "mnuViewFinalPhrases_Click", will the form I create in this function go out of scope? Do I need to create some kind of static reference to this form to keep it from going out of scope?
Answers (2)