2016-09-24 5 views
0

私はこの質問を他のサイトで聞いたことがありますが、回答は常に私には何らかの例外を引き起こしました。プログレスバーを使用してダウンロードのパーセンテージを表示するにはどうすればよいですか?

私は、ファイルをダウンロードしてプログレスバーを表示するプログラムを作ろうとしています。

マイコードこれまで

Private Sub AdwCleanerButton_Click(sender As Object, e As EventArgs) Handles AdwCleanerButton.Click 
    My.Computer.Network.DownloadFile(
    "https://www.dropbox.com/s/gg3ocih2dv3t3lg/adwcleaner_6.020.exe?dl=0", 
    "C:\Users\llexl\Desktop\adwcleaner_6.020.exe") 
End Sub 

私はプログレスバーにダウンロードの割合を表示したいと思います。

+0

あなたの質問が何であるかを明確にすることはできますか?それはまだ明らかではない。 –

答えて

1

最小限のコードでこれを行う最も簡単な方法は、ダウンロードファイルの組み込みプログレスバーを使用することです。プログレスバーとキャンセルボタンが付いた小さなウィンドウが表示されます。あなたのコードに追加する必要があるだろうすべては、以下のパラメータです:

My.Computer.Network.DownloadFile("https://www.dropbox.com/s/gg3ocih2dv3t3lg/adwcleaner_6.020.exe?dl=0", _ 
           "C:\Users\llexl\Desktop\adwcleaner_6.020.exe", "", "", True, 500, True) 

あなたは先のファイルパスの後に見る最初の真のプログレスバーウィンドウを作成するパラメータです。あなたは、ファイルの合計サイズを照会し、独自の進捗バーを実装するために、ダウンロードを通じてその進捗状況を取得したい場合


はしかし、このプロセスは少し複雑になります。ダウンロードのprogress-changedイベントを処理し、変更された進行中のバイト数をパーセンテージに変換し、そのパーセンテージをプログレスバーに適用するイベントハンドラを作成する必要があります。次に、ダウンロードコードが表示されます以下のような:

Dim url As String = "https://www.dropbox.com/s/gg3ocih2dv3t3lg/adwcleaner_6.020.exe?dl=0" 
Dim savePath As String = "C:\Users\llexl\Desktop\adwcleaner_6.020.exe" 
Dim download As New WebClient() 
AddHandler download.DownloadProgressChanged, AddressOf Download_ProgressChanged 
download.DownloadFileAsync(New Uri(url), savePath) 

そして、あなたの進捗状況-変更ハンドラ:

Public Sub Download_ProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) 
    Try 
     ProgressBar1.Value = CInt(Math.Round((e.BytesReceived/e.TotalBytesToReceive) * 100, 0, MidpointRounding.AwayFromZero)) 
    Catch ex As Exception 
     Debug.Print(ex.ToString) 
    End Try 
End Sub 

しかしdownloadprogressオブジェクトは、ファイルの先頭にあるデータに依存からあなたは、ファイルの合計サイズを取得することができるかどうか、そう常にそこから返される数字はありません。進捗率の計算に使用するために、ダウンロードする前にファイルのサイズを取得するために使用する代替関数を調べる必要があるかもしれません。私はdropboxには、その種類の情報を取得するために使用できるAPIがあると信じています

関連する問題