Benutzer mit den meisten Antworten
Farbe ändern: ProgressBar

Frage
-
Hallo,
eigentlich dachte ich es wäre ganz simple: in VB Express 2013 die Farbe der ProgressBar zu ändern . Aber es geht nicht so wie ich mir das vorgestellt habe (Sie bleibt einfach grün). Ich habe jetzt schon Stunden in diversen Foren gesucht - ich bin aber auch nicht schlauer geworden (die Beiträge waren schon Jahre alt !!) Ich habe schon festgestellt, dass es da früher 'mal Probleme gab - die aber hoffentlich jetzt (2016) gelöst sind: nur nicht bei mir?
Wie gesagt (geschrieben) verwende ich VB Express 2013 in dem Windows 10 Betriebssystem und .NET Framework 4 Client Profile.
Was muss ich bitte machen damit ich die ProgressBar-Farbe ändern kann???
Ich bin dankbar um jeden brauchbaren Hinweis.
mfg - Walter
wafest42
- Verschoben Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 26. September 2016 12:15 Die Frage ist nicht editionsspezifisch (aus: Visual Studio Community)
Antworten
-
Hallo Walter,
ein Fortschrittsbalken ist letzten Endes ja nichts weiter als ein Balken der in einem bestimmten Bereich langsam größer wird. Beispiele für komplexere Umsetzungen findet man genug im Internet, beispielsweise hier*. Dieses hier ist beispielsweise für WinForms geeignet.
*Das ist der Link von Elmar, aber repariert.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Montag, 19. September 2016 16:23 Fixed Link
- Als Antwort markiert mowastengr Donnerstag, 22. September 2016 10:23
-
Hi Walter,
man kann recht einfach ein eigenes CustomControl erstellen und den Balken beliebig "malen", z.B. so:Public Class UserProgressBar Public Property Rahmenfarbe As Color = Color.Red Public Property Balkenfarbe As Color = Color.Green Public Property Minimum As Double = 0 Public Property Maximum As Double = 100 Public Property Value As Single = 33.3 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) Dim gr = e.Graphics gr.FillRectangle(New SolidBrush(Balkenfarbe), New Rectangle(0, 0, CInt(Me.Width * (Value - Minimum) / (Maximum - Minimum)), Me.Height)) gr.DrawRectangle(New Pen(Rahmenfarbe, 2), New Rectangle(1, 1, Me.Width - 2, Me.Height - 2)) End Sub End Class
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Warum Groß- und Kleinschreibung wichtig ist:
Der Gefangene floh.
Der gefangene Floh.- Als Antwort markiert mowastengr Donnerstag, 22. September 2016 10:23
Alle Antworten
-
Hallo Walter,
wie das geht hängt von der verwendeten Technologie ab.
Wenn du WinForms verwendest...wird es schwierig. Denn WinForms verwendet das Standard Windows Control und das kennt soweit ich weiß nur Gelb, Grün und Rot als Anzeigefarbe und der Indeterminate-State geht nur in Grün. Hier kannst du vermutlich nur mit einem eigenen Render-Code arbeiten, was aber deutlich aufwendiger ist.
Wenn du WPF, Silverlight oder eines der App Frameworks verwendest:
Hier kannst du dir das Control template generieren lassen, indem du im Designer das Control auswählst und im Kontextmenü Vorlage bearbeiten > Kopie bearbeiten auswählst. Im Dadurch generierten XAML Code kannst du dann die verwendeten Farb-Resourcen austauschen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo Walter,
bei Windows Forms wird mit den Farben des Betriebssystems gerendert (die meist grün sind), solange Applicaton.EnableVisualStyles aktiviert ist. Nur wenn man es deaktiviert gelten die Farben die man bei der ProgressBar einstellen kann. Das Deaktivieren verändert jedoch das Verhalten aller anderen Standard-Steuerelemente, so dass man sich das gut überlegen sollte.
Eine Alternative ist eine andere ProgressBar zu verwenden; u. a. auf CodeProject gibt es diverse in allen Varianten und Geschmäckern.
Gruß Elmar
- Bearbeitet Elmar BoyeEditor Montag, 19. September 2016 16:26 Link
-
Hallo Walter,
solange Du Dir nicht mal sicher bist, in welcher Umgebung Du entwickelst, ist es schwierig für uns jegliche (kleine / hohe) Hilfestellung zu geben. Anhand der eingebundenen Bibliotheken (Projekt-Verweise) kann man das erkennen, wenn schon nicht anhand der Optik.
Gruß Elmar
-
Leider habe ich Deinen Hinweis, Tom,
Hier kannst du dir das Control template generieren lassen, indem du im Designer das Control
auswählst und im Kontextmenü Vorlage bearbeiten > Kopie bearbeiten auswählst. Im Dadurch
generierten XAML Code kannst du dann die verwendeten Farb-Resourcen austauschen.doch nicht richtig verstanden.
In welchem Kontextmenü finde ich bitte Vorlage bearbeiten > Kopie bearbeiten ???
Wenn ich mit der rechten Maustast auf das Control (ProgressBar) klicke, sehe ich das leider nicht.
Ich bitte Dich um weitere Hinweise für einen Anfänger wie mich. Danke
Gruß - Walter
wafest42
-
-
Hallo Walter,
Windows Forms Application
Das ist das wonach wir suchten. Damit geht mein Lösungsweg für WPF nicht.
Wie weiter oben schon steht benutzt Windows Forms die Standard-Windows-Controls und die bieten wenig Platz für Anpassungen. Selbst geschriebene Fortschrittsbalken können da oftmals deutlich mehr. Was du nun einsetzt ist dir überlassen.
Ich empfehle dir dich nicht mit der Farbgestaltung rumzuärgern wenn du ein bestimmtes Ziel in dem Projekt hast. Das Programmierwissen aufbauen ist meistens deutlich wichtiger als die Farbe eines Controls. In einem später stattfindenden Feinschliff kann man das aber immer nochmal ändern.
PS: @Elmar an deinem CodeProject-Link scheint das HTTP zu fehlen weswegen der Link nicht richtig funktioniert.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hallo Tom,
Danke für Deine Hinweise:
Ich konnte mir nicht vorstellen, dass das Ändern der Farbe eines ProgressBars sooo kompliziert sein kann und hab' mich da richtig verbissen!!
Ich werde mich nicht mehr mit der Farbgestaltung rumärgern sondern einfach umgehen. Ich wollte halt mit der Farbgebung anzeigen ob der angezeigte Wert im roten, gelben oder grünen Bereich liegt. Das geht auch mit einem RadioButton oder dem Hintergrund einer TextBox.
Das mit dem Selbst geschriebene Fortschrittsbalken interessiert mich schon - hast Du dazu bitte Beispiele? Danke.
Danke auch an @Alle fürs Zuhören und die Ratschläge.
Gruß - Walter
wafest42
-
Hallo Walter,
ein Fortschrittsbalken ist letzten Endes ja nichts weiter als ein Balken der in einem bestimmten Bereich langsam größer wird. Beispiele für komplexere Umsetzungen findet man genug im Internet, beispielsweise hier*. Dieses hier ist beispielsweise für WinForms geeignet.
*Das ist der Link von Elmar, aber repariert.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller)Moderator Montag, 19. September 2016 16:23 Fixed Link
- Als Antwort markiert mowastengr Donnerstag, 22. September 2016 10:23
-
Hi Walter,
man kann recht einfach ein eigenes CustomControl erstellen und den Balken beliebig "malen", z.B. so:Public Class UserProgressBar Public Property Rahmenfarbe As Color = Color.Red Public Property Balkenfarbe As Color = Color.Green Public Property Minimum As Double = 0 Public Property Maximum As Double = 100 Public Property Value As Single = 33.3 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) Dim gr = e.Graphics gr.FillRectangle(New SolidBrush(Balkenfarbe), New Rectangle(0, 0, CInt(Me.Width * (Value - Minimum) / (Maximum - Minimum)), Me.Height)) gr.DrawRectangle(New Pen(Rahmenfarbe, 2), New Rectangle(1, 1, Me.Width - 2, Me.Height - 2)) End Sub End Class
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Warum Groß- und Kleinschreibung wichtig ist:
Der Gefangene floh.
Der gefangene Floh.- Als Antwort markiert mowastengr Donnerstag, 22. September 2016 10:23