我有两种形式。第一种形式用于显示一组记录,第二种形式用于编辑特定记录。我使用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。
答案 0 :(得分:0)
您可能已将 btnEditOrganizationImage 从DialogResult属性设置为与DialogResult.None不同的按钮进行复制/粘贴。
这会触发模态表单的结束操作,修复非常简单
将 btnEditOrganizationImage 的属性DialogResult设置为DialogResult.None
来自Button.DialogResult上的MSDN
如果此属性的DialogResult设置为除以外的任何内容 无,如果父表单是通过ShowDialog显示的 方法,单击按钮关闭父表单,而不是你的 连接任何事件。然后将表单的DialogResult属性设置为 单击按钮时按钮的DialogResult