由于我将OpenFileDialog放入BackgroundWorker,Filter
选项不再有效。
我用它作为按钮点击它并且工作正常,除了我打开它的每个文件不会关闭文件,因此我添加了BackgroundWorker。
Anywho,这是我当前的代码,与我的按钮点击代码没什么不同。
Dim OpenFileDialog2 As New OpenFileDialog()
OpenFileDialog2.InitialDirectory = "C:\Temp\Config_Files\"
OpenFileDialog2.Filter = "Configuration Files (*.cfg)|*.cfg"
我是否需要添加一些内容才能使其正常工作?
答案 0 :(得分:1)
我认为您误解了使用背景工作者的建议 您应该让OpenFileDialog完成其工作并获取要处理的cfg文件,然后,如果您想要更快的UI响应,请启动后台工作程序。
Dim fileToProcess as String = string.Empty
Using opf As New OpenFileDialog()
opf.InitialDirectory = "C:\Temp\Config_Files\"
opf.Filter = "Configuration Files (*.cfg)|*.cfg"
if opf.ShowDialog() = DialogResult.OK then
fileToProcess = opf.FileName
Endif
End Using
if fileToProcess <> string.Empty then
' Now start you backgroundworker to do its job
end if
当然,用户可以重新开始使用相同的代码并再次选择相同的文件。这可能会导致意外结果。最好禁用按钮/菜单或启动文件选择过程的任何内容,直到上一个过程结束。