vb.net - 如何从 MDI Child 中保存图像
问题描述
这是代码
Private Sub mnuFileSep_Click(sender As Object, e As EventArgs) Handles mnuFileSep.Click
Dim saveFile As SaveFileDialog = New SaveFileDialog
saveFile.Title = "Save Files"
saveFile.InitialDirectory = "C:\"
saveFile.Filter = "Jpg File|*.jpg"
If saveFile.ShowDialog() = DialogResult.OK Then
'An error appears from the line below
Form2.PictureBox1.Image.Save(saveFile.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
End If
End Sub
解决方案
最可能的错误来源是使用Form2
. 这会尝试访问 Form2 的“默认实例”,而您可能已经使用“new”关键字显示了不同的实例。
获取对 Form2 实际实例的引用的一种方法:
Private Sub mnuFileSep_Click(sender As Object, e As EventArgs) Handles mnuFileSep.Click
Dim f2 As Form2 = Me.MdiChildren.OfType(Of Form2).FirstOrDefault
If Not IsNothing(f2) Then
Dim saveFile As New SaveFileDialog
saveFile.Title = "Save Files"
saveFile.InitialDirectory = "C:\"
saveFile.Filter = "Jpg File|*.jpg"
If saveFile.ShowDialog() = DialogResult.OK Then
f2.PictureBox1.Image.Save(saveFile.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
End If
End If
End Sub
如果您打开了多个 Form2 实例,那么您可以检查活动的 MdiChild 是否属于 Form2 类型,并使用它来代替:
Private Sub mnuFileSep_Click(sender As Object, e As EventArgs) Handles mnuFileSep.Click
If Not IsNothing(Me.ActiveMdiChild) AndAlso TypeOf(Me.ActiveMdiChild) Is Form2 Then
Dim f2 As Form2 = DirectCast(Me.ActiveMdiChild, Form2)
Dim saveFile As New SaveFileDialog
saveFile.Title = "Save Files"
saveFile.InitialDirectory = "C:\"
saveFile.Filter = "Jpg File|*.jpg"
If saveFile.ShowDialog() = DialogResult.OK Then
f2.PictureBox1.Image.Save(saveFile.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
End If
End If
End Sub
推荐阅读
- java - 如何解决使用 Gradle 的 Java 项目的 Cobertura 不一致的代码覆盖率问题?
- regex - 用于在 Perl 中捕获 vcard 组的正则表达式
- c++ - 如何将 cpr 的 get 响应转换为 json 对象?
- javascript - 如何在没有 google plus 个人资料图片的情况下嵌入 Google Maps?
- php - 如何解决包含希伯来语文本的 Excel 工作表中的缓慢移动和滚动问题?
- html - 如何消除内容下的空间?
- pandas - 设置多个应用列
- javascript - 映射和传递 onClick 函数作为道具后如何定位特定元素
- swift - 如何编辑隐藏在 Xcode Storyboard 中其他视图后面的视图?
- ssl - 有什么方法可以在免费的 heroku dyno 上添加免费的 SSL 证书?