Аналог VB.net-кода для c#
Формулировка задачи:
Добрый день! Я нашел небольшой код, который позволяет видеть процесс копирования файла в progressBar. Но к сожалению, данный код написан на vb.net, который я не знаю. Может ли кто-нибудь правильно переписать данный код на c#, чтобы он работал?
Imports System.Net
Imports System.IO
Public Class Form1
WithEvents WC As New WebClient
Dim UrlFile As Uri = New Uri("D:\Hard\1.msi")
Dim Leng As Long
Public Sub New()
' Этот вызов необходим конструктору форм Windows.
InitializeComponent()
Dim FI As FileInfo = New FileInfo(UrlFile.LocalPath)
Leng = FI.Length
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WC.DownloadFileAsync(UrlFile, "D:\1.msi")
End Sub
' Процедура "копирования"
Sub DPC(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
ProgressBar1.Maximum = Leng \ 1024 ' Max
ProgressBar1.Value = e.BytesReceived \ 1024 ' Value
Text = e.BytesReceived \ 1024 & " Кб" ' KbReceived
End Sub
' Копирование завершено
Private Sub DFC(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
If e.Error Is Nothing Then
MsgBox("OK")
Else
MsgBox(e.Error)
End If
End SubРешение задачи: «Аналог VB.net-кода для c#»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
WebClient WC = new WebClient();
Uri UrlFile = new Uri(@"D:\Hard\1.msi");
long Leng;
public Form1()
{
InitializeComponent();
FileInfo FI = new FileInfo(UrlFile.LocalPath);
Leng = FI.Length;
WC.DownloadProgressChanged+=new DownloadProgressChangedEventHandler(WC_DownloadProgressChanged);
WC.DownloadFileCompleted+=new AsyncCompletedEventHandler(WC_DownloadFileCompleted);
}
private void button1_Click(object sender, EventArgs e)
{
WC.DownloadFileAsync(UrlFile, @"D:\1.msi");
}
//Процедура "копирования"
void WC_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Maximum = (int)Leng / 1024;// Max
progressBar1.Value = (int)e.BytesReceived / 1024;// Value
Text = string.Concat(progressBar1.Value, " Кб");// KbReceived
}
//Копирование завершено
void WC_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Error == null)
MessageBox.Show("OK");
else
MessageBox.Show(e.Error.Message);
}
}
}