我有一个带有取消按钮的DialogBox,如下所示:
Dim dlgSizSelection As New dlgTyreSizeSelection(objCarWebVehicle.Tyres, objCarWebVehicle)
If (dlgSizSelection.ShowDialog) = Windows.Forms.DialogResult.OK Then
selectedTyre = CType(dlgSizSelection.lstTyreOptions.SelectedItem, CarWebVehicleCOM.TyreData)
dlgSizSelection.Close()
ElseIf (dlgSizSelection.ShowDialog) = Windows.Forms.DialogResult.Cancel Then
dlgSizSelection.Close()
Exit Sub
Else
MsgBox("No tyre sizes selected.", MsgBoxStyle.Exclamation, "Tyre Search")
dlgSizSelection.Close()
Exit Sub
End If
但是,当我在表单中设置DialogReturn属性时,其调用如下:
DialogResult = Windows.Forms.DialogResult.Cancel
按下然后取消按钮,它会短暂闪烁,然后对话框重新出现,就像我没有按任何一样,为了让它完全关闭,我必须再次按下它。
我错过了什么?
答案 0 :(得分:3)
首先:在模态对话框返回后不要调用close。模态对话框会自动关闭。
您的代码存在问题,原因如下:您不止一次致电ShowDialog
。如果您的代码确定未单击“确定”,则会再次显示对话框,等待用户再次单击。
If (dlgSizSelection.ShowDialog) = Windows.Forms.DialogResult.OK Then
...
ElseIf (dlgSizSelection.ShowDialog) = Windows.Forms.DialogResult.Cancel Then
...
End If
声明一个局部变量,它将单个调用的结果保存到ShowDialog
,并且一切正常:
Dim result as Windows.Forms.DialogResult = dlgSizSelection.ShowDialog
If (result = Windows.Forms.DialogResult.OK) Then
....
ElseIf (result = Windows.Format.DialogResult.Cancel) Then
....
Else
....
End If
不要致电Close
而不需要到Exit Sub
。