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

Visual Basic FolderBrowser无返回值,无法保存路径至My.Settings

问题分析与解决

核心问题

你用FolderBrowserDialog1_Disposed事件来保存路径是错误的——这个事件仅在对话框对象被销毁时才会触发,而调用ShowDialog()后,对话框不会立即被销毁,所以这段代码根本没执行,导致设置没保存、MsgBox也没弹出。

修正后的代码

把逻辑移到菜单点击事件里,通过判断对话框的返回结果来处理:

Private Sub CartellaTessutiToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CartellaTessutiToolStripMenuItem.Click
    ' 显示对话框并判断用户是否选择了文件夹
    If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
        ' 将选中路径保存到设置
        My.Settings.CartellaTex = FolderBrowserDialog1.SelectedPath
        ' 保存设置到文件
        My.Settings.Save()
        ' 弹出提示
        MsgBox(My.Settings.CartellaTex.ToString)
    End If
End Sub

额外检查项

  • 确认My.Settings里的CartellaTex设置为User范围(不是Application范围),只有User范围的设置才能修改并永久保存。
  • 检查FolderBrowserDialog的初始化是否正常,确保没有在其他地方意外销毁了这个对象。

关于“昨晚能运行”的说明

之前偶然能运行大概率是特殊场景下对话框被意外触发了Disposed事件(比如程序意外退出时),但这不符合正常逻辑,不能依赖这个事件处理用户选择结果。

内容的提问来源于stack exchange,提问作者lorenzomorelli.y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:30:59