.net - 取消按钮需要第二次按下

标签 .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

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

我错过了什么?

最佳答案

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

您的代码有问题,原因如下:您多次调用 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/

相关文章:

c# - 需要帮助选择数据库服务器

c# - 用 C# 读取 OLE 对象

c# - 找不到 Entity Framework ADO.NET Sql.Data.Client 提供程序

java - 在Java中执行windows命令

javascript - 通过分页更改表信息

vb.net - 将文本框的背景色设置为透明

.net - xml 字符串的通用反序列化

linux - git版本在windows和linux之间是否兼容

windows - "Too many environment variables"尝试从 Hudson 启动 cywin shell 时

.net - 为什么 OnXXX 事件引发器方法不返回值?