2016-08-02 84 views
0

有沒有什麼辦法可以在表單加載時隱藏MessageBox?有什麼方法可以隱藏MessageBox嗎?

我已經使用Checkedlistbox,並且已經有一個checkeditems加載Form2

我想要做的是,當我點擊Form1時,它顯示Form2Checkedlistbox。我的問題是,當我點擊Form1時,它會在Form2之前顯示MessageBox。

這是我在vb.net代碼:

Form1

Private Sub cmdSubmitModifyQuant_Click(sender As Object, e As EventArgs) Handles cmdSubmitModifyQuant.Click 
    Form2.Show() 
End Sub 

Form2

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    chklstBox1Fill() 
End Sub 

Private Sub CheckedListBox1_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck 
    If e.NewValue = CheckState.Checked Then 
     question = MsgBox("Area you sure you want to remove?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Message") 
     If question = MsgBoxResult.Yes Then 
      'Nevermind 
     ElseIf question = MsgBoxResult.No Then 
      e.NewValue = CheckState.Checked 
     End If 
    End If 
End Sub 

在我的代碼,你可以看到,我還需要檢查checklistbox1

+2

@ shad0wk:在VB.NET中,窗體的類名也提供了一個默認實例,所以是編譯的。 –

回答

1

此問題可能是您在檢查複選框列表中檢查項目的chklstBox1Fill方法中,這會導致顯示該複選框的事件發生。爲了避免這種情況的一個方法是設置一個標誌,表明你正在填充列表,並沒有顯示時,標誌設置的消息框:

Private FillingList As Boolean 

Private Sub chklstBox1Fill() 
    FillingList = True 

    'Rest of method here. 

    FillingList = False 
End Sub 

Private Sub CheckedListBox1_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck 
    If FillingList = True Then 
     Return 
    End If 

    If e.NewValue = CheckState.Checked Then 
     question = MsgBox("Area you sure you want to remove?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Message") 
     If question = MsgBoxResult.Yes Then 
      'Nevermind 
     ElseIf question = MsgBoxResult.No Then 
      e.NewValue = CheckState.Checked 
     End If 
    End If 
End Sub 

(請原諒我的VB.Net,已經好幾年過去了,因爲我寫任何!)

+0

這看起來合適我,這應該在理論上解決問題 – David

+0

哦。它應該解決我的問題。謝謝你,在這個世界上有一個好人。呵呵呵。 – Rhamnold

1

添加一個布爾變量,指示您的加載過程是否完成。這樣做將不會執行CheckedChanged,直到該變量設置爲True。

Dim FormLoaded As Boolean = False 

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    chklstBox1Fill() 
    FormLoaded = True 
End Sub 

Private Sub CheckedListBox1_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck 
    If FormLoaded = False Then Return 'Don't execute the rest of the code if it evaluates to False. 

    If e.NewValue = CheckState.Checked Then 
     question = MsgBox("Area you sure you want to remove?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Message") 
     If question = MsgBoxResult.Yes Then 
      'Nevermind 
     ElseIf question = MsgBoxResult.No Then 
      e.NewValue = CheckState.Checked 
     End If 
    End If 
End Sub 
相關問題