Private WithEvents _WebClient As New System.Net.WebClient ... '-------------------------------------------------------------------------------- '「ダウンロード開始」ボタンクリック '-------------------------------------------------------------------------------- Private Sub btnDownload_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDownload.Click ''入力項目チェック If (txtDownloadUrl.Text.Length = 0) Then MessageBox.Show("ダウンロードURLを入力してください。", "エラー", _ MessageBoxButtons.OK, MessageBoxIcon.Error) txtDownloadUrl.Focus() Exit Sub End If If (txtSaveFilePath.Text.Length = 0) Then MessageBox.Show("保存先を入力してください。", "エラー", _ MessageBoxButtons.OK, MessageBoxIcon.Error) txtSaveFilePath.Focus() Exit Sub End If ''ファイル有無チェック If (My.Computer.FileSystem.FileExists(txtSaveFilePath.Text) = True) Then If MessageBox.Show("ファイルが既に存在します。上書きしますか?", "確認", _ MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = _ Windows.Forms.DialogResult.Cancel Then Exit Sub End If End If ''ダウンロード開始 Dim uni As New Uri(txtDownloadUrl.Text) Try _WebClient.DownloadFileAsync(uni, txtSaveFilePath.Text) txtDownloadUrl.ReadOnly = True txtSaveFilePath.ReadOnly = True btnDownload.Enabled = False btnCancel.Enabled = True Catch ex As Exception MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub ... '-------------------------------------------------------------------------------- 'ダウンロード進捗状況変更イベント '-------------------------------------------------------------------------------- Private Sub _WebClient_DownloadProgressChanged(ByVal sender As Object, _ ByVal e As System.Net.DownloadProgressChangedEventArgs) _ Handles _WebClient.DownloadProgressChanged pgbarDownload.Value = e.ProgressPercentage lblGetBytes.Text = e.BytesReceived.ToString & " / " & e.TotalBytesToReceive.ToString End Sub ... '-------------------------------------------------------------------------------- 'ダウンロード完了イベント '-------------------------------------------------------------------------------- Private Sub _WebClient_DownloadFileCompleted(ByVal sender As Object, _ ByVal e As System.ComponentModel.AsyncCompletedEventArgs) _ Handles _WebClient.DownloadFileCompleted If (e.Cancelled = True) Then lblGetBytes.Text = "ダウンロードは中止されました" ElseIf (e.Error Is Nothing) Then lblGetBytes.Text = "ダウンロードが完了しました" Else lblGetBytes.Text = e.Error.Message End If pgbarDownload.Value = 0 txtDownloadUrl.ReadOnly = False txtSaveFilePath.ReadOnly = False btnDownload.Enabled = True btnCancel.Enabled = False End Sub
ネタ元