2013-10-03 4 views
0

Я довольно много нового для визуального базового, и у меня есть эта штука, хвастающаяся мной. У меня есть две формы в приложении Windows при выборе некоторых свойств в первой форме, и они нажимают на продолжение, затем загружают вторую форму. Я написал код для выполнения, пока вторая форма загружается в соответствии с типом переключателя, установленного в первой форме.Как полностью уничтожить форму окна, оставив ее.?

Ниже приведен код для загрузки на вторую форму.

  `If Selectdisplay.rdbtnmps.Checked = True Then 
     LoadFromExcelForRDIToolStripMenuItem.Visible = False 
     LoadFromExcelForTIToolStripMenuItem.Visible = False 
     Label1.Text = "Prediction of MPS in SINTER PLANT 4" 
     Chart1.Series(2).Enabled = False 
     Chart1.Series(3).Enabled = False 
     Chart1.Series(4).Enabled = False 
     Chart1.Series(5).Enabled = False 
    ElseIf Selectdisplay.rdbtnti.Checked = True Then 
     LoadFromExcelToolStripMenuItem1.Visible = False 
     LoadFromExcelForRDIToolStripMenuItem.Visible = False 
     Label1.Text = "Prediction of TI in SINTER PLANT 4" 
     Chart1.Series(0).Enabled = False 
     Chart1.Series(1).Enabled = False 
     Chart1.Series(4).Enabled = False 
     Chart1.Series(5).Enabled = False` 

"select display" является первой формой. поэтому теперь, когда я выхожу из второй формы и возвращаюсь в первую форму, свойства, которые я устанавливал выше, когда вторая форма загружается в первый раз, сохраняются, и я хочу, чтобы они сбросили другие слова, я хочу полностью уничтожить вторую форму, когда я выйдите из него, чтобы я мог загрузить его только недавно, проверив разные радиокнопки в первой форме.

Благодарим за внимание Заранее спасибо.

+1

В то время как вы работаете над второй формой, что происходит с первой формой? обе сосуды сосуществуют? первая форма скрыта? вторая форма отображается как диалоговое окно, так что пользователь не может перейти в форму1 до тех пор, пока форма 2 не будет закрыта? – inquisitive

+0

Вторая форма отображается как диалоговое окно – user69668

ответ

2

Вы сказали в комментариях, что вторая форма показывает как модальный диалог. я предпочел бы в Form1:

Sub Button1_Click(sender as Object, e as EventArgs) Handles Button1.Click 
    Using frm2 = new Form2() 
     frm2.ShowDialog() 
    End Using 
End Sub 

также, в form2, я бы воздержался от If Selectdisplay.rdbtnti.Checked = True Then вызовов типа. Не ссылайтесь на форму по ее статическому имени. скорее используйте фактические ссылки. Таким образом, в form2, я бы:

Public SelectdisplayForm as Form 

модифицируя Button1_Click code:

Sub Button1_Click(sender as Object, e as EventArgs) Handles Button1.Click 
    Using frm2 = new Form2() 

     ' --- NOTE THIS LINE --- 
     frm2.SelectdisplayForm = me 

     frm2.ShowDialog() 
    End Using 
End Sub 

, а затем в form2 всякий раз, когда вы хотите сослаться на что-нибудь из Form1, используйте локальное поле (переменная) не форма имя класса.

    |--| 
If SelectdisplayForm.rdbtnmps.Checked = True Then 
       |--| 
    do something.. 
        |--| 
ElseIf SelectdisplayForm.rdbtnti.Checked = True Then 
        |--| 

    do other thing.. 

End if 
+0

Спасибо большое, что это помогло .. – user69668

0

Вы можете попробовать подключиться к событию FormClosing (документация здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx).

Таким образом, в вашей второй форме добавить обработчик, как это:

Protected Sub SecondForm_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing 

    'add code to change selected radio buttons etc. 

End Sub 

Этот обработчик события будет называться как форма закрывается. Вы также можете использовать событие FormClosed во многом таким же образом (документация: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosed.aspx).

+0

да, это прекрасно .. есть что-нибудь вроде 'set me = nothing' или' set secondform = nothing', не закрывая всю программу – user69668

+0

Я имею в виду, когда вы выходите из всей программы (включая «select дисплей ", который является формой запуска), все будет сброшено вправо.? поэтому я хочу, чтобы не закрывая первую форму, но закрывая только вторую, нужно делать .. !! Спасибо .. – user69668

+0

Пожалуйста, добавьте код, который создает и показывает вторую форму из вашей формы «выбор отображения» на ваш вопрос. – Sean

0

Простым способом является просто позвонить форме.Close() перед доступом к документу.

Selectdisplay.Close() 
If Selectdisplay.rdbtnmps.Checked = True Then 
.... 
ElseIf Selectdisplay.rdbtnti.Checked = True Then 
.... 
end if 
+0

selectdisplay - это «стартап-форма», поэтому, если вы добавите это событие закрытия формы в load_event второй формы, вся программа закроет – user69668

+0

. имя второй формы? Это тот, который вам нужно закрыть, прежде чем обращаться к нему с новой информацией. В VB он будет создавать новую форму за кулисами при первом доступе к ней. Вот почему это странное поведение наблюдается. – Archlight

Смежные вопросы