アクション時に2つのボタン付きMessageBoxを表示するFormClosingイベントハンドラがあります。 したがって、ユーザーが「はい」をクリックすると、Forループを使用して値がチェックされ、 valueこれは、すべての変数が残った状態で新しいものを開くことなく、この同じ形式にとどまるべきである。無効なデータがアサートされた後にフォームを閉じるのを防ぐ
どうすれば実現できますか?
示すように簡略化コードである: (クラスコードがMainForm.vb CLASコードによって使用されるEditDataForm.vbに存在する)FormClosingのイベントハンドラで
''' Closing Event that fired upon user closing the Form
Private Sub EditDataForm_FormClosing(sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing
If MessageBox.Show(Me, "Do you want to save your changes?", "Unsaved Changes!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
ButtonSave_Click(Me, e)
Else
Exit Sub 'Exit this Sub
End If
End Sub
''' Button Save Click Event
Private Sub ButtonSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSave.Click
Dim rowIndex As Integer
Dim CheckDouble As Double
'' Leave the oth and 1th row
For rowIndex = 2 To masterDataGridView.RowCount - 1
If TypeOf(masterDataGridView.Rows(rowIndex).Cells("Val").Value) is String Then
Double.TryParse(masterDataGridView.Rows(rowIndex).Cells("Val").Value, CheckDouble)
If(CheckDouble <= 0) Then
MsgBox("Decimal Number Expect in place of:" & masterDataGridView.Rows(rowIndex).Cells("Val").Value & "at Row Number:" & rowIndex + 1, MsgBoxStyle.Critical, "FAILURE")
'''''''' HOW CAN I STAY ON THIS SAME FORM
Exit Sub
End If
End If
Next
''Other Save Methods etc...
End Sub
あなたが示唆したように真e.Cancel =を追加した後。 Like: ButtonSave_Click(Me、e) e.Cancel = True これは予想通りです。ありがとう。 – user3051677
あなたはC#とVB.NETの構文が混在しているようです:)。セミコロンはVB.NETでは使用されず、比較演算子は '='です。 –