1

我有一个带有取消按钮的对话框,如下所示:

 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

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

我错过了什么?

4

1 回答 1

3

首先:不要在模态对话框返回后调用 close 。模态对话框会自动关闭。

您的代码有问题,原因如下:您ShowDialog不止一次调用。如果您的代码确定没有单击 OK,它会再次显示对话框,等待用户再次单击。

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

于 2013-07-15T11:52:15.307 回答