我有一个带有取消按钮的 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
然后按下取消按钮,它会短暂闪烁,然后对话框重新出现,就像我什么也没按一样,为了让它完全关闭,我必须再次按下它。
我错过了什么?
最佳答案
首先:不要在模态对话框返回后调用关闭。模态对话框会自动关闭。
您的代码有问题,原因如下:您多次调用 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
。
关于.net - 取消按钮需要第二次按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653257/