Происходит следующее: когда в конструкторе DialogResult
для кнопки установлено значение «ОК», это значение устанавливается каждый раз при нажатии кнопки «ОК», независимо от того, что. Таким образом, даже если вы рано выходите из обработчика событий, используя Exit Sub
, форма вызова видит DialogResult
«OK».
Как вы обнаружили, вам сначала нужно установить для свойства DialogResult
кнопки значение "Нет" в конструкторе, а затем обработать установку свойства DialogResult
на правильное значение вручную в событии нажатия кнопки "ОК". обработчик. Например:
Private Sub OKButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If EntriesAreValid Then
'Return OK to the calling form
Me.DialogResult = DialogResult.OK
Else
'Show an error message, but keep the form open
MessageBox.Show("One or more of your entries were invalid.")
End If
End Sub
Кроме того, вы можете оставить для свойства DialogResult
значение «ОК» в конструкторе и просто переопределить его при сбое проверки, установив для него значение «Нет». Это, вероятно, приводит к более чистому коду:
Private Sub OKButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Not EntriesAreValid Then
'Show an error message
MessageBox.Show("One or more of your entries were invalid.")
'Clear the DialogResult property and keep the form open
Me.DialogResult = DialogResult.None
End If
End Sub