2016-08-02 10 views
0

フォームロード時にMessageBoxを非表示にする方法はありますか?MessageBoxを隠す方法はありますか?

私はCheckedlistboxを使用しましたが、すでにForm2の負荷でcheckeditemsがあります。

私がしたいことは、Form1をクリックするとForm2Checkedlistboxと表示されます。私の問題は、Form1をクリックすると、Form2の前にMessageBoxが表示されることです。あなたは私もchecklistbox1をチェックする必要があることがわかります私のコードで

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 

Form1の場合:

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

Form2でここ

は私vb.netのコードです。

+2

@ shad0wk:VB.NETでは、フォームのクラス名もデフォルトインスタンスを提供するので、コンパイルできます。 –

答えて

1

この問題は、おそらく、chklstBox1Fillメソッドの中で、チェックボックスリスト内の項目をチェックしていると、チェックボックスを示すイベントが発生する可能性があります。これを回避する1つの方法は、フラグが設定されているメッセージボックスを表示し、あなたが移入されているリストを示すためにフラグを設定していないために、次のようになります。

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

ああ。それは私の問題を修正する必要があります。ありがとう、この世界に彼女の良い人がいる。 hehehe。 – Rhamnold

1

ロード手順が完了したかどうかを示すブール変数を追加します。これを行うと、変数がTrueに設定されるまでCheckedChangedは実行されません。

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 
関連する問題