【问题标题】:frm.showDialog dispose when openFileDialog close [vb.net]当 openFileDialog 关闭时 frm.showDialog 处理 [vb.net]
【发布时间】:2016-10-08 16:09:58
【问题描述】:

我有两种形式。第一种形式用于显示一组记录,第二种形式用于编辑特定记录。我使用 frm.ShowDialog() 调用了第二种形式。在该表单中,我有一个按钮来调用 OpenFileDialog。当我按下 OK 或 Cancel 时,第二个表单将与 OpenFileDialog 一起处理。我很应该我的代码是正确的,但这是 ShowDialog() 问题。有人对这个问题有想法吗?

这就是我从第一个表单中调用第二个表单来显示信息的方式。

Private Sub btnViewOrganizationEdit_Click(sender As Object, e As EventArgs) Handles btnViewOrganizationEdit.Click, dgvOrganization.DoubleClick
    Dim selectedOrganization As New Organization
    'check permission because double click
    If dgvOrganization.RowCount > 0 Then
        strOrganizationID = dgvOrganization.SelectedRows.Item(0).Cells(0).Value
        selectedOrganization = helperOrganizationCKJ.getOrganizationByID(strOrganizationID)
        frmEditOrganizationCKJ.objOrganization = selectedOrganization
        frmEditOrganizationCKJ.ShowDialog()
        iniGridView()
    End If
End Sub

这就是我调用 OpenFileDialog 的方式。

Private Sub btnEditOrganizationImage_Click(sender As Object, e As EventArgs) Handles btnEditOrganizationImage.Click
    dlgImage.Filter = ""
    Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
    Dim sep As String = String.Empty
    For Each c As ImageCodecInfo In codecs
        Dim codecName As String = c.CodecName.Substring(8).Replace("Codec", "Files").Trim()
        dlgImage.Filter = String.Format("{0}{1}{2} ({3})|{3}", dlgImage.Filter, sep, codecName, c.FilenameExtension)
        sep = "|"
    Next
    dlgImage.FilterIndex = 5

    If dlgImage.ShowDialog(Me) = DialogResult.OK Then
        'Get the image name
        Dim img = dlgImage.FileName
        picEditOrganizationImage.Image = System.Drawing.Bitmap.FromFile(img)
    End If
End Sub

frmEditOrganizationCKJ 只是与 OpenFileDialog 的 dispose 一起配置。

【问题讨论】:

  • 我不明白这个问题或问题。显示为 ShowDialog 的表单在您关闭时不会被释放,但您的 frmEditOrganizationCKJ 在关闭时将超出范围。看起来你真的有 3 种形式:第一种形式,frmEditOrganizationCKJdlgImage
  • @Plutonix 其实是父对话框被子对话框关闭了。

标签: vb.net forms dispose openfiledialog showdialog


【解决方案1】:

您可能已经从一个将DialogResult 属性设置为不同于DialogResult.None 的按钮复制/粘贴了您的btnEditOrganizationImage

这会触发您的模态表单的关闭操作,并且修复非常简单。
btnEditOrganizationImage 的属性 DialogResult 设置为 DialogResult.None

来自 MSDN 上的 Button.DialogResult

如果此属性的 DialogResult 设置为 无,如果父窗体是通过 ShowDialog 显示的 方法,单击按钮关闭父窗体,而无需 连接任何事件。然后将表单的 DialogResult 属性设置为 点击按钮时按钮的DialogResult

【讨论】:

  • 哦,我明白了。我从根窗体中复制,该窗体也具有相同的按钮来调用 OpenFileDialog,并且 DialogResult 设置为 Cancel。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多