2011-05-29 60 views
0

我有一個登錄表單,如果登錄對主菜單正確,它將發送u ...主菜單具有通往其他表單的按鈕。當點擊一個按鈕時,它隱藏主菜單並顯示其他表單。但問題在於,當主菜單隱藏並出現其他主菜單時,主菜單會自行重新打開,並且每次關閉它時都會再次打開。這讓我瘋狂。這裏是代碼: -VB.net表單自己重新打開

Public Class mainmenu 

    Private Sub Button1_Click(ByVal sender As System.Object, _ 
     ByVal e As System.EventArgs) Handles Button1.Click 
     Me.Hide() 
     Maintenance.Show() 
    End Sub 

    Private Sub mainmenu_Load(ByVal sender As System.Object, _ 
     ByVal e As System.EventArgs) Handles MyBase.Load 
     If Login.c1 <> 0 Then 
      Me.memberbtn.Visible = True 
     Else 
      Me.memberbtn.Visible = False 
     End If 
    End Sub 

    Private Sub memberbtn_Click(ByVal sender As System.Object, _ 
     ByVal e As System.EventArgs) Handles memberbtn.Click 
     Me.Hide() 
     Member.Show() 
    End Sub 
End Class 

檢查點擊事件。該程序不會給我任何錯誤。 plz幫助。

+0

成員或維護窗體是否有任何打開主菜單表單的代碼? – 2011-05-29 11:01:59

+0

是的,每個表單都有一個後退按鈕,如果按下後隱藏當前表單並再次顯示主菜單。同上。 – BFK 2011-05-29 11:03:27

+0

你怎麼知道「每次關閉它,它會再次打開」,因爲如果是因爲代碼,它會在隱藏之後立即顯示,人們看不到它。我的意思是,你有兩種其他形式的代碼與你的主菜單表單鏈接嗎? – 2011-05-29 11:08:22

回答

0

你發佈了錯誤的代碼。您必須完成一些操作才能確保在用戶關閉表單時菜單再次可見。這是導致問題的代碼。

讓我們製作一個沒有這個問題的版本。您需要聆聽FormClosed事件以瞭解菜單需要再次變爲可見。編寫確保這一點helper方法:

Private Sub DisplayForm(ByVal frm As Form) 
    AddHandler frm.FormClosed, AddressOf DisplayMenu 
    frm.Show() 
    Me.Hide() 
End Sub 

Private Sub DisplayMenu(ByVal sender As Object, ByVal e As EventArgs) 
    Me.Show() 
End Sub 

按鈕的單擊事件處理程序,現在簡單:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    DisplayForm(New Maintenance()) 
End Sub 

可以進一步提高DisplayForm方法。很可能您希望將表單的StartPosition屬性設置爲手動,並設置其Location屬性,以使表單顯示在屏幕上的一致位置。