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応答が必要な場合は、backgroundworkerを起動します。

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 に答える