0

由于我将 OpenFileDialog 放入 BackgroundWorker,该Filter选项不再有效。

我曾经将它作为一个按钮单击,它工作正常,除了我打开的每个文件都不会关闭文件,因此我添加了 BackgroundWorker。

任何人,这是我当前的代码,与我拥有的按钮单击代码没有什么不同。

Dim OpenFileDialog2 As New OpenFileDialog()

OpenFileDialog2.InitialDirectory = "C:\Temp\Config_Files\"
OpenFileDialog2.Filter = "Configuration Files (*.cfg)|*.cfg"

是否需要添加一些内容才能使其正常工作?

4

1 回答 1

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

当然,用户可以重新启动相同的代码并再次选择相同的文件。这可能会导致意想不到的结果。最好禁用按钮/菜单或启动文件选择过程的任何东西,直到前一个过程结束。

于 2013-01-28T20:30:26.640 回答