当openFileDialog关闭时,frm.showDialog处理[vb.net]

时间:2016-10-08 16:09:59

标签: vb.net forms dispose openfiledialog showdialog

我有两种形式。第一种形式用于显示一组记录,第二种形式用于编辑特定记录。我使用frm.ShowDialog()调用了第二个表单。在那个表单中,我有一个按钮来调用OpenFileDialog。当我按OK或取消时,第二个表单与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。

1 个答案:

答案 0 :(得分:0)

您可能已将 btnEditOrganizationImage DialogResult属性设置为与DialogResult.None不同的按钮进行复制/粘贴。

这会触发模态表单的结束操作,修复非常简单 将 btnEditOrganizationImage 的属性DialogResult设置为DialogResult.None

来自Button.DialogResult上的MSDN

  

如果此属性的DialogResult设置为除以外的任何内容   无,如果父表单是通过ShowDialog显示的   方法,单击按钮关闭父表单,而不是你的   连接任何事件。然后将表单的DialogResult属性设置为   单击按钮时按钮的DialogResult