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
相关产品推荐
相关产品推荐

