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

OpenFileDialog取消/关闭触发FileNotFoundException崩溃求修正代码

解决OpenFileDialog取消后触发FileNotFoundException的问题

你的代码里有几个关键问题导致了崩溃,我帮你修正并解释每一处修改:

原代码的核心问题:

  • 两次调用ShowDialog(),导致弹出两次对话框,逻辑完全混乱
  • 错误地将FileName(字符串)和DialogResult.Cancel(枚举值)做比较,这个判断永远不会成立
  • 在用户取消对话框后,仍然尝试读取默认的"Select a Text File..."这个不存在的文件
  • 过滤器Filter的格式错误,少了点(应该是*.txt而不是*txt)
  • 搜索字符串Lookfor是空值,会导致Contains永远返回true,失去实际意义

修正后的完整代码

Private Sub HuraButton1_Click(sender As Object, e As EventArgs) Handles HuraButton1.Click
    Dim openFileDialog1 As New OpenFileDialog()
    ' 设置对话框属性,修正过滤器格式
    openFileDialog1.FileName = "Select a Text File..."
    openFileDialog1.Filter = "Text Files (*.txt)|*.txt"
    openFileDialog1.InitialDirectory = "C:\Users\Public\Desktop\"
    openFileDialog1.Title = "Select a File" ' 修正拼写错误:Files -> File

    ' 只调用一次ShowDialog,并保存结果
    Dim dialogResult As DialogResult = openFileDialog1.ShowDialog()

    ' 先判断用户是否确认选择了文件
    If dialogResult = DialogResult.OK Then
        ' 确认文件存在后再读取(额外的安全检查)
        If IO.File.Exists(openFileDialog1.FileName) Then
            Dim findString = IO.File.ReadAllText(openFileDialog1.FileName)
            Dim lookFor As String = "你要搜索的内容" ' 这里替换成实际要查找的字符串
            If findString.Contains(lookFor) Then
                MsgBox("Found")
            Else
                MsgBox("Not Found")
            End If
        Else
            MsgBox("Selected file does not exist.")
        End If
    Else
        ' 用户取消或关闭对话框时的提示
        MsgBox("No file selected.")
    End If
End Sub

关键修改说明:

  1. 只调用一次ShowDialog()并保存结果:避免重复弹出对话框,通过dialogResult变量判断用户操作
  2. 正确判断对话框结果:用dialogResult = DialogResult.OK来确认用户确实选择了文件,取消时进入Else分支,不会执行文件读取逻辑
  3. 增加文件存在检查:即使用户选择了文件,也额外用IO.File.Exists验证,进一步避免找不到文件的情况
  4. 修正过滤器格式:确保Filter能正确筛选txt文件
  5. 修复拼写错误:把标题里的"Select a Files"改成"Select a File",更准确
  6. 提示设置搜索字符串:把空的lookFor变量改成需要实际搜索的内容,让功能有意义

这样修改后,无论用户取消对话框还是选择不存在的文件,程序都不会崩溃,而是给出友好的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:19:39