You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET程序调用OpenFileDialog在Windows 10中崩溃求助

解决OpenFileDialog在Windows 10中崩溃的问题

先帮你梳理下代码里可能导致Win10崩溃的几个关键点,再给出修复后的代码和额外的兼容性建议:

1. 错误的ShowHelp属性设置时机

你在ShowDialog()之后才设置OpenFileDialog1.ShowHelp = True,这是不合理的——对话框已经关闭,此时修改这个属性可能触发Win10下的控件状态异常,这很可能是崩溃的直接原因。如果确实需要显示帮助按钮,应该在ShowDialog()之前设置这个属性。

2. Image.FromFile的资源锁定问题

Image.FromFile()会锁定目标文件,在Win10更严格的文件权限机制下,这种锁定可能引发意外的资源冲突。建议改用流的方式加载图片,避免文件锁定,同时确保资源被正确释放。

3. 过滤器格式的规范修正

你的过滤器字符串格式不够标准,虽然Win7可能兼容,但Win10对格式要求更严格,建议调整为标准格式:"Picture Files (*.bmp;*.gif;*.jpg;*.png)|*.bmp;*.gif;*.jpg;*.png"

修复后的完整代码

Dim OpenFileDialog1 As New OpenFileDialog
Try
    ' 提前设置ShowHelp(如果需要显示帮助按钮)
    OpenFileDialog1.ShowHelp = True
    OpenFileDialog1.Filter = "Picture Files (*.bmp;*.gif;*.jpg;*.png)|*.bmp;*.gif;*.jpg;*.png"
    
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Path_And_File_Name = OpenFileDialog1.FileName
        
        ' 用流加载图片,避免文件锁定
        Using fs As New System.IO.FileStream(Path_And_File_Name, System.IO.FileMode.Open, System.IO.FileAccess.Read)
            pbAttachments.Image = Image.FromStream(fs)
        End Using
        
        ' 获取文件大小并判断
        ImgFileSize = My.Computer.FileSystem.GetFileInfo(Path_And_File_Name).Length
        DoubleBytes = CDbl(ImgFileSize / 1048576) ' 转换为MB
        ImgFileSize_MB = FormatNumber(DoubleBytes, 2)
        
        If ImgFileSize_MB > 3 Then
            MsgBox("Image attachment is limited to 3 MB, the image file size you are trying to upload is " & ImgFileSize_MB & " MB!" & vbCrLf & "Please resize your Image!", vbExclamation)
            ' 清空已加载的图片避免资源残留
            pbAttachments.Image = Nothing
            Exit Sub
        End If
    End If
Catch ex As Exception
    ' 捕获完整异常信息,方便精准排查
    MsgBox($"Error: {ex.Message}{vbCrLf}Stack Trace: {ex.StackTrace}")
Finally
    ReleaseMemory()
    OpenFileDialog1.Dispose()
End Try

额外的Win10兼容性建议

  • 程序兼容性设置:右键你的程序.exe,选择「属性」→「兼容性」,勾选「以兼容模式运行这个程序」并选择「Windows 7」,同时勾选「禁用高DPI缩放行为」。
  • 权限检查:确保程序有读取目标图片文件的权限,避免尝试访问受保护的系统目录(比如Documents之外的路径)。
  • .NET Framework版本升级:如果可能,尝试将程序升级到.NET Framework 4.8(Win10默认支持),相比3.5有更好的兼容性和稳定性。

内容的提问来源于stack exchange,提问作者Saldy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:12