取消按钮需要第二次按下

时间:2013-07-15 11:31:26

标签: .net windows vb.net winforms

我有一个带有取消按钮的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

按下然后取消按钮,它会短暂闪烁,然后对话框重新出现,就像我没有按任何一样,为了让它完全关闭,我必须再次按下它。

我错过了什么?

1 个答案:

答案 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