2013-10-03 41 views
0

我對視覺基礎非常陌生,我有這個東西吹噓我。 我有兩種形式在我的Windows應用程序中選擇一些屬性的第一種形式,他們點擊繼續然後第二種形式加載。我已經編寫了一些代碼來執行,而第二種形式是根據第一種形式檢查的單選按鈕的類型加載的。如何在離開它時徹底摧毀窗體。

以下是第二種形式的Load事件的代碼。

  `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

當您在第二個窗體上工作時,第一個窗體會發生什麼?兩種形式並存嗎?第一種形式是隱藏的?第二種形式顯示爲一個對話框,以便用戶在form2關閉之前無法轉到form1? – 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 

此外,在窗口2,我就從If Selectdisplay.rdbtnti.Checked = True Then型呼叫避免。不要通過靜態名稱引用表單。而是使用實際的參考。因此,在窗口2,我會:

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 

,然後在窗口2,當你想從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

是啊這是好..有沒有什麼像'設置我=沒有'或'設置secondform =沒有'沒有關閉整個程序 – user69668

+0

我的意思是當你退出整個程序(包括「選擇顯示「這是啓動形式),一切都會重新設置。所以我希望沒有關閉第一種形式,但只關閉第二個應該做的..!謝謝.. – user69668

+0

請添加從您的「選擇顯示」表單創建並顯示第二個表單到您的問題的代碼。 – Sean

0

簡單的方法就是在訪問文檔前調用form.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