Progressbar Farbe ändern?

  • VB.NET

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Hi!

    Das ändern der Farbe ist seit den Windows XP Designs nicht mehr möglich, weil es sich nicht um "handgemalte" Grafiken, sondern Bitmaps handelt.
    Es gibt z.B. die kostenlosen CoolXP-Steuerelemente mit einer WinXP-Progressbar, die Farben ändern kann.

    Mit 1 bis 3 Pictureboxen, 3 Bildern und ein bisschen Code kannst du dir aber auch deine ganz persönliche Progressbar erstellen :)
    Hi,

    vielen Dank für die nützlichen Antworten.

    Ich werde das auf später verschieben müssen.
    Für meine Zwecke ist das momentan zu aufwändig. Wenn es 2 oder 3 Klicks gewesen wären, hätte ich da sicherlich drauf zugegriffen.
    Evtl im nächsten Projekt.

    Macht weiter so. Ein tolles Forum.

    Marco
    so far...
    Wumpel


    ...manchmal ist es einfacher als man denkt...
    ist es möglich mit wenigen Kommandos die Frabe einer Progressbar von grün in zB rot zu ändern?
    Mir ist eine Stelle bei Windows Vista Home Basic bekannt, wo es eine rote satt grüne Progressbar gibt:

    Wenn man die Datensicherung abbricht füllt sich die Progressbar ganz und wechselt von grün zu rot.
    Wäre schön, wenn jemand wüsste, wie das gemacht wurde
    Hey,

    wie oben schon genannt, funktioniert das einfärben einer Progressbar unter Windows XP nicht, da diese als Bitmap eingelesen werden. Unter Windows Vista funktioniert das einfärben aber wieder.

    Dieser Code sollte unter Windows Vista die Progressbar einfärben:

    VB.NET-Quellcode

    1. Public Class Form1 Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, _
    2. ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    3. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    4. 'nval als Integer von Textbox.Text für Value.
    5. Dim nval As Integer = TextBox1.Text 'nval als Value von der Progressbar setzen.
    6. ProgressBar1.Value = nval 'Der code für die änderung.
    7. If nval < 50 Then
    8. SendMessage(ProgressBar1.Handle, &H400 + 16, &H3, 0) 'Pause; Yellow
    9. ElseIf nval > 50 Then
    10. SendMessage(ProgressBar1.Handle, &H400 + 16, &H1, 0) 'Normal; Green
    11. End If
    12. End Sub
    13. End Class


    In der Textbox1 gibt man einen Wert zwischen 0 und 100 ein, zwischen 0-50 wird die Progressbar1 gelb, zwischen 50-100 grün.

    Gruß Manuel
    Ja ich weiß, dass des für Vista ist, aber ich dachte Vista ist sehr ähnlich wie Win7....
    aber es klappt auch nicht auf Win7. :wacko:
    naja... da mach ich mir lieber meine eigene progressbar :pinch:

    Gruß
    Valerian

    Denny schrieb:

    rot:
    SendMessage(ProgressBar1.Handle, &H400 + 16, &H2, 0)


    Ich bin ma so frech und grabe ein altes Thema aus. Aber könnte mir jemand sagen wo ich die Farbwerte herbekomme wenn ich z.B Blau haben will?
    Das die Farbe nur durch das &H2 geändert wird habe ich schon gecheckt aber ich würde gerne wissen was für Farben es gibt.
    Private Const PBST_NORMAL = 1'Normal

    Private Const PBST_ERROR = 2'Rot

    Private Const PBST_PAUSED = 3'Gelb

    das sind die drei Werte(statt 2 kann man hier natürlich auch den HexWert nehmen^^)...

    bin mir bei den Farben nicht sicher...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Bei mir funktioniert es unter Windows 7:

    Version: Windows 7 Ultimate
    Framework-Version: 4.0
    VB-Version:Visual Basic 2010 Express

    Ich habe es mit einem Timer gemacht:
    Hier der Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, _
    3. ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    4. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    5. 'nval als Integer von Textbox.Text für Value.
    6. Dim nval As Integer = TextBox1.Text 'nval als Value von der Progressbar setzen.
    7. ProgressBar1.Value = nval 'Der code für die änderung.
    8. If nval < 50 Then
    9. SendMessage(ProgressBar1.Handle, &H400 + 16, &H3, 0) 'Pause; Yellow
    10. ElseIf nval > 51 Then
    11. SendMessage(ProgressBar1.Handle, &H400 + 16, &H2, 0) 'Fehler; Red
    12. End If
    13. End Sub
    14. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    15. TextBox1.Text += 1
    16. If TextBox1.Text = 100 Then
    17. TextBox1.Text = 1
    18. End If
    19. End Sub
    20. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    21. Timer1.Start()
    22. End Sub
    23. End Class

    °°°°°VB-Coder°°°°°

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB-Coder“ ()