2010-10-08 12 views
6

Ich benutze Windows 7, so dass meine Fortschrittsbalken alle dieses grüne Aussehen haben. Ich hätte gerne etwas Simplifiziertes, vielleicht etwas, das an den Fortschrittsbalken von Windows 98 erinnert.Windows 98-Stil Fortschrittsbalken

Gibt es eine einfache Möglichkeit, den Stil der Fortschrittsleiste zu ändern, oder muss ich sie manuell neu erstellen?

+2

<3 Win98 Stil :) –

Antwort

7

Sie können das exakte Win98 Aussehen ohne eine ziemlich drastische Neuschreibung des Steuerelements nicht leicht erhalten. Aber ein einfacher flacher hellblauer Fortschrittsbalken kann durch das Deaktivieren visueller Stile erreicht werden. Wie folgt aus:

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

class SimpleProgressBar : ProgressBar { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     if (Environment.OSVersion.Version.Major >= 6) { 
      SetWindowTheme(this.Handle, "", ""); 
     } 
    } 
    [DllImport("uxtheme.dll")] 
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist); 
} 
+1

Oder nur mit einer älteren Version von comctl32. Obwohl ich deine Lösung viel besser mag; es ist wahrscheinlich robuster. – Brian

+0

Das ist eigentlich ein wirklich netter Effekt, und tatsächlich scheint es auf Win10 gut mit der Farbe eines ausgewählten Elements in einer ListBox übereinzustimmen, so dass es einen konsistenten Stil behält. – Nyerguds

0

Ich habe dies nicht getestet ... auf einer XP-Maschine jetzt ... aber ich vermute, wenn Sie "Windows XP Styles" unter den Rahmeneinstellungen für Ihre Anwendung deaktivieren, erhalten Sie, was Sie suchen .

+0

Ich möchte es für ein Element, nicht alles ausschalten. – Pieter

1

Schritt 1: Download COMCTL32.ocx (Version 5). Ich glaube, Version 5 ist verteilbar, obwohl Version 6 meiner Meinung nach nicht verteilbar ist. Der, mit dem ich mich verbinde, ist wahrscheinlich nicht der Redist, aber das ist der, den ich diese Schritte getestet habe.
Schritt 2: Passen Sie Ihre Toolbox an und wählen Sie die Datei aus, die Sie von der Registerkarte "COM Components" heruntergeladen haben (indem Sie danach suchen).
Schritt 3: Fügen Sie eine Progressbar aus den neuen Toolboxeinträgen hinzu.

Hinweis: Im Designer wird es immer noch wie eine neuere Fortschrittsleiste aussehen.

1

Ich mag Hans 'Antwort, aber es gibt keine Notwendigkeit, die Klasse des Steuerelements zu überschreiben. Sie können den Win7-Stil von einem einzelnen Steuerelement entfernen, indem Sie einfach SetWindowTheme mithilfe des Steuerelements aufrufen. Hier ein Beispiel:

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

namespace MyApplication 
{ 
    public partial class Form1 : Form 
    { 
     [DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)] 
     public extern static Int32 SetWindowTheme(IntPtr hWnd, 
         String textSubAppName, String textSubIdList); 

     public Form1() 
     { 
      InitializeComponent(); 

      // Remove Win7 formatting from the progress bar. 
      SetWindowTheme(progressBar1.Handle, "", ""); 
+0

Ein ausgezeichneter Vorschlag. Speichert mir eine Override-Klasse. – Nyerguds