【发布时间】: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 种形式:第一种形式,frmEditOrganizationCKJ和dlgImage -
@Plutonix 其实是父对话框被子对话框关闭了。
标签: vb.net forms dispose openfiledialog showdialog