VB.Net如何选择文件名而不打开文件(解决占用报错问题)
解决VB.Net中OpenFileDialog选择被占用文件报错的问题
OpenFileDialog默认会验证选中文件的有效性,包括尝试访问文件以确认其可打开性,对于像pagefile.sys这类被系统占用的文件,这个验证过程会触发错误。你只需要获取文件路径而非打开文件,可通过修改对话框属性来规避这个问题:
Imports System.IO ' ... Using dialog As New OpenFileDialog dialog.Title = "Select a file to exclude from the backup" dialog.InitialDirectory = "C:\" dialog.ValidateNames = False ' 关闭文件名有效性验证,避免触发被占用文件的访问错误 dialog.CheckFileExists = True ' 保留文件存在性检查(可选,不需要可设为False) If dialog.ShowDialog <> DialogResult.OK Then Return ' 可选:自行验证文件是否存在 If File.Exists(dialog.FileName) Then MsgBox(dialog.FileName) Else MsgBox("Selected file does not exist.") End If End Using
关键设置说明
ValidateNames = False:禁用对话框对文件名的有效性验证,包括跳过尝试打开文件的检查逻辑,这样就能顺利获取被占用文件的路径。CheckFileExists = True(可选):如果需要确保用户选择的是真实存在的文件,可保留该设置,对话框会检查文件是否存在,但不会尝试访问它。- 额外的
File.Exists检查:作为双重验证,避免用户输入无效路径。
内容的提问来源于stack exchange,提问作者rerat
相关产品推荐
相关产品推荐

