[VB2010]How to Download erstellen

10/03/2010 21:11 |R.o.x|#1
Ihr müsst erstellen:
1 Textbox (mit dem Text "DownloadURL"
1 Button (mit dem Text "Download!" / am bessten direkt unter der Textbox.)
1 Label (Mit KEINEM Text / am bessten auch DIREKT unter dem Button)
1 Progressbar (am bessten GANZ UNTEN bei der Form.)
1 SaveFileDialog.


Zuerst macht ihr einen Doppelklick auf die Form, um den Code anzuzeigen.
Direkt über Public Class Form1 kommt:
HTML Code:
Imports System.Net
Brauchen wir damit wir den WebClienten erstellen können.

Direkt unter Public Class Form1 kommt:
HTML Code:
Dim WithEvents wclient As New WebClient
Erstellt einen WebClienten mit dem Namen wclient. ( Zu dem WithEvents kommen wir später.)


So, jetzt macht ihr einen Doppelklick auf den Button, und schreibt folgendes:
HTML Code:
      With SaveFileDialog1
            .FileName = IO.Path.GetFileNameWithoutExtension(TextBox1.Text)
            .Filter = IO.Path.GetExtension(TextBox1.Text) & "|*." & IO.Path.GetExtension(TextBox1.Text)

        End With
        SaveFileDialog1.ShowDialog()
        wclient.DownloadFileAsync(New Uri(TextBox1.Text), SaveFileDialog1.FileName)
With SaveFileDialog1 ist eigentlich nur, damit man nich so viel schreiben muss.
Die ersten 5 Zeilen müsst ihr nicht benutzen, aber es sieht eindeutisch besser aus ;) .
Zu Zeile 6: Zeigt den Dialog vom SaveFileDialog1.
Zu Zeile 7: Der Webclient speichert die Datei (Die URL ist TextBox1.Text & der Speicherort ist SaveFileDialog1.FileName)


So
Jetzt zu WithEvents.
Wenn ihr jetzt mal oben, wo die 2 ComboBoxen sind, auf die erste klickt, dann seht ihr dass WClient dabei ist.
Ohne "WithEvents" wäre es nicht dabei.
Jetzt klickt ihr in der 1. ComboBox auf WClient, und in der 2. Combobox auf DownloadProgressChanged.
Dann schreibt ihr:
HTML Code:
Dim splittext1 As String = e.BytesReceived / 1000
        Dim splittext2 As String = e.TotalBytesToReceive / 1000
        splittext1 = splittext1.Split(Chr(46))(0)
        splittext2 = splittext2.Split(Chr(46))(0)
        splittext1 = splittext1.Split(Chr(44))(0)
        splittext2 = splittext2.Split(Chr(44))(0)
        ProgressBar1.Value = e.ProgressPercentage
        Label1.Text = splittext1 & " kB's / " & splittext2 & " kB's"
        If e.BytesReceived = e.TotalBytesToReceive Then
            MessageBox.Show("Datei wurde gespeichert!")
        End If
Die erste Zeile ist einfach die Variable zu BytesReceived aber duch 1000 (Damit es KiloBytes sind, und nicht Bytes)
Die 2. Zeile macht das gleiche, nur mit den Totalen Bytes.
Die 3. Zeile splitet die Variable splittext1 auf Punkte.
Die 4. Zeile splitet die Variable splittext2 auf Punkte.
Die 5. Zeile splitet die Variable splittext1 auf Kommas.
Die 6. Zeile SPlitet die Variable splittext2 auf Kommas.
Das ist alles, damit keine Kommazahlen entstehen, wenn man durch 1000 rechnet.
Die 7. Zeile bedeutet, dass die Value von der Progressbar, die Value vom Download ist.
Die 8. Zeile zeigt an, wieviele KiloBytes gesendet wurden (mit unserer "getunten" Variable) und wieviele KiloBytes man insgesamt downloaden muss(auch "getunte" Variable)
Die 9. Zeile fragt, ob BytesReceived, das gleiche wie TotalBytes ist, also der Download fertig ist.
Die 10. Zeile zeigt eine MessageBox, dass der Download fertig ist.
Die 11. Zeile schließt die Frage von der 9. Zeile ab.

Debuggen & Fertig :)
Credits: LaVendetta (Hier im Forum Lavendetta16)
10/04/2010 16:44 Konata-Chan#2
1. mhh
werde es probieren
10/04/2010 16:45 #SoFaar.#3
Einfach irgwo uploaden und dann Link reinstellen ^^ ...
10/04/2010 18:53 |R.o.x|#4
Es soll Downloader heißen^^ sry