2016-08-25 27 views
0

私のWindowsプロジェクトでCefSharp [49]を使用しています ダウンロードハンドラを使用して、特定の条件に従ってダウンロードをキャンセルします。CefSharp OnBeforeDownloadハンドラを開くウィンドウを保存する代わりにファイルを開く

以下は私のハンドラですが、私が直面している問題は、ウィンドウを開くときに '名前を付けて保存'ウィンドウではなく 'ファイルを開く'ウィンドウであるということです。

public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) 
     { 
      if (!callback.IsDisposed) 
      { 
       using (callback) 
       { 
        if (_allowDownload) 
         callback.Continue(downloadItem.SuggestedFileName, showDialog: true); 
        else 
         downloadItem.IsCancelled = !_allowDownload; 
       } 
      } 
     } 

enter image description here

+0

として以下のコードを使用? '51.0.0'。 '49.0.0'のような古いバージョンはもはやサポートされていません。もちろん、問題を回避するための独自のダイアログを表示することもできます。 – amaitland

+0

私は.NET Framework 4を使う必要があります。とにかく、私は自分のダイアログボックスを使ってこの問題を処理します。 – Hybridzz

答えて

0

私はこの問題は、最新バージョンを使用して再現しない解決策

public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) 
    { 
     if (!callback.IsDisposed) 
     { 
      using (callback) 
      { 
       if (_allowDownload) 
       { 
        SaveFileDialog saveFileDialog = new SaveFileDialog(); 
        saveFileDialog.FileName = downloadItem.SuggestedFileName; 
        saveFileDialog.Filter ="|*"+ System.IO.Path.GetExtension(saveFileDialog.FileName); 

        if (saveFileDialog.ShowDialog() == DialogResult.OK && saveFileDialog.FileName != "") 
        { 
         downloadItem.SuggestedFileName = saveFileDialog.FileName;        
        } 
        else 
         **downloadItem.IsCancelled = _allowDownload;** 
       } 
       else 
        **downloadItem.IsCancelled = !_allowDownload;** 

       callback.Continue(downloadItem.SuggestedFileName, showDialog: false); 
      } 

     } 
    } 

    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) 
    { 

     if (downloadItem.IsComplete || downloadItem.IsCancelled) 
      browser.CloseBrowser(true); 
    } 
+0

@amaitlandこれは、ダウンロードをキャンセルする正しい方法です(上記のコードで**とマークされています)? – Hybridzz

+1

'デフォルトではダウンロードはキャンセルされます.'、ダウンロードを許可する場合にのみ' callback.Continue'を呼び出します。 – amaitland

関連する問題