WebClient - Progressbar

  • Allgemein

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    WebClient - Progressbar

    Kurze und Schnelle frage:

    (hallo ausserdem :D)
    Wie kann ich den Downloadstatus des Webclients in einer Progressbar anzeigen.
    Meine Vermutung war wiefolgt:

    VB.NET-Quellcode

    1. Private Sub wc_DownloadProgressChanged(sender As Object, e As Net.DownloadProgressChangedEventArgs) Handles wc.DownloadProgressChanged
    2. ProgressBar1.Value = CUInt(e.ProgressPercentage)
    3. End Sub



    VB.NET-Quellcode

    1. If Not downloading Then
    2. downloading = True
    3. stp = Stopwatch.StartNew
    4. wc.DownloadFileAsync(New Uri("http://download.thinkbroadband.com/100MB.zip"), tmpfile)
    5. End If

    Bitte um Hilfe.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Sry dass ich vergessen habe den fehler anzugeben. Es passiert nichts mit der progressbar.
    Liegt das vielleicht daran dass es einfach nur extrem lange zum Downloaden braucht oder wie?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Es könnte natürlich auch einfach nur zu langsam gehen. Hast du schon mit dem Debugger (mit einem Haltepunkt) geprüft, ob das Event überhaupt ausgelöst wird? Ich kann mir vorstellen, dass bei sehr kleinen Downloads dieses Event auch nicht ausgelöst wird, sondern direkt das DownloadFileCompleted/DownloadStringCompleted-Event. Das solltest du sowieso abfragen:

    VB.NET-Quellcode

    1. Private Sub DownloadCompleted(sender As Object, e As AsyncCompletedEventHandler) Handles wc.DownloadFileCompleted
    2. ProgressBar1.Value = ProgressBar1.MaxValue
    3. End Sub
    Okey das ganze funktioniert mit einer normalen progressbar.
    Jedoch funktioniert es nicht mit dieser PRogressbar da sie CUINT konvertiertierung verlang.
    Progressbar

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.ComponentModel
    3. Public Class ProgressBar
    4. Inherits System.Windows.Forms.Control
    5. Private _Color1 As System.Drawing.Color
    6. <Category("Progressbar")> _
    7. Public Property Color1 As System.Drawing.Color
    8. Get
    9. Return Me._Color1
    10. End Get
    11. Set(ByVal value As System.Drawing.Color)
    12. Me._Color1 = value
    13. Me.Invalidate()
    14. End Set
    15. End Property
    16. Private _Color2 As System.Drawing.Color
    17. <Category("Progressbar")> _
    18. Public Property Color2 As System.Drawing.Color
    19. Get
    20. Return Me._Color2
    21. End Get
    22. Set(ByVal value As System.Drawing.Color)
    23. Me._Color2 = value
    24. Me.Invalidate()
    25. End Set
    26. End Property
    27. Private _Minimum As UInteger
    28. <Category("Progressbar")> _
    29. Public Property Minimum As UInteger
    30. Get
    31. Return Me._Minimum
    32. End Get
    33. Set(ByVal value As UInteger)
    34. If value > Me._Maximum Then Throw New Exception("Minimum value cant be greater than maximum value")
    35. Me._Minimum = value
    36. End Set
    37. End Property
    38. Private _Maximum As UInteger
    39. <Category("Progressbar")> _
    40. Public Property Maximum As UInteger
    41. Get
    42. Return Me._Maximum
    43. End Get
    44. Set(ByVal value As UInteger)
    45. If value < Me._Minimum Then Throw New Exception("Maximum value cant be less than minimum value")
    46. Me._Maximum = value
    47. End Set
    48. End Property
    49. Private _Value As UInteger
    50. <Category("Progressbar")> _
    51. Public Property Value As UInteger
    52. Get
    53. Return Me._Value
    54. End Get
    55. Set(ByVal value As UInteger)
    56. If value < Me._Minimum OrElse value > Me._Maximum Then Throw New Exception("Value must be beteween minimum and maximum value")
    57. Me._Value = value
    58. End Set
    59. End Property
    60. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    61. MyBase.OnPaint(e)
    62. e.Graphics.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
    63. Dim globalRect As System.Drawing.Drawing2D.GraphicsPath = GraphicsHelper.DrawRoundedRectangle(New System.Drawing.Rectangle(0, 0, Me.Width - 1, Me.Height - 1), 8)
    64. Dim valueRect As System.Drawing.Drawing2D.GraphicsPath = GraphicsHelper.DrawRoundedRectangle(New System.Drawing.Rectangle(0, 0, (CInt((Me.Width) * Me._Value / Me._Maximum)), Me.Height - 1), 8)
    65. e.Graphics.FillPath(New System.Drawing.Drawing2D.LinearGradientBrush(New System.Drawing.Point(0, 0), New System.Drawing.Point(0, Me.Height - 1), Drawing.Color.FromArgb(255, 189, 189, 189), Drawing.Color.FromArgb(255, 219, 219, 219)), globalRect)
    66. e.Graphics.FillPath(New System.Drawing.Drawing2D.LinearGradientBrush(New System.Drawing.Point(0, 0), New System.Drawing.Point(0, Me.Height - 1), Me._Color1, Me._Color2), valueRect)
    67. e.Graphics.FillPath(New System.Drawing.Drawing2D.HatchBrush(Drawing.Drawing2D.HatchStyle.WideUpwardDiagonal, System.Drawing.Color.FromArgb(&H0), System.Drawing.Color.FromArgb(&HF000000)), valueRect)
    68. e.Graphics.DrawPath(Drawing.Pens.LightSlateGray, valueRect)
    69. e.Graphics.DrawPath(Drawing.Pens.DimGray, globalRect)
    70. End Sub
    71. Sub New()
    72. Me._Minimum = 0
    73. Me._Maximum = 100
    74. Me._Value = 50
    75. Me._Color1 = Drawing.Color.FromArgb(255, 45, 142, 232)
    76. Me._Color2 = Drawing.Color.FromArgb(255, 39, 123, 204)
    77. Me.Size = New System.Drawing.Size(200, 10)
    78. Me.Text = ""
    79. End Sub
    80. End Class


    Das Problem ist, es funktioniert auch nicht, wenn ich überall UInteger in Integer verändere.

    Bitte um Hilfe.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Wie soll ich sie denn am anfang bringen wenn ich sie erst jetzt entdeckt habe?
    Naja ja sie funkt, es ist außerdem diese progressbar: [VB.NET] Meine Controls (Source)

    Bitte um hilfe.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Mal ne kurze offtopic frage, mit wem Redest du bitte?
    Warum also fragt er nicht...
    Naja Topic erledigt.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!