2010-10-08 17 views
6

मैं विंडोज 7 का उपयोग करता हूं, इसलिए मेरी प्रगति सलाखों में सभी हरे रंग की दिखती हैं। हालांकि मैं कुछ और अधिक सरल बनाना चाहता हूं, शायद विंडोज 98 प्रगति पट्टी जैसा दिखता है।विंडोज 98-शैली प्रगति पट्टी

क्या प्रगति पट्टी की शैली को बदलने का कोई आसान तरीका है या क्या मुझे इसे मैन्युअल रूप से फिर से बनाना होगा?

+2

<3 Win98 स्टाइल :) –

उत्तर

7

आप आसानी से सटीक Win98 को नियंत्रण के एक बहुत ही कठोर पुनर्लेखन के बिना आसानी से नहीं देख सकते हैं। लेकिन दृश्य शैलियों को बंद करके एक साधारण फ्लैट लाइट-ब्लू प्रगति पट्टी हो सकती है। इस तरह:

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

या comctl32 के पुराने संस्करण का उपयोग करके। हालांकि मुझे आपका समाधान बहुत अच्छा लगता है; यह शायद अधिक मजबूत है। – Brian

+0

यह वास्तव में वास्तव में एक अच्छा प्रभाव है, और वास्तव में, Win10 पर यह एक सूची बॉक्स में किसी चयनित आइटम के रंग से अच्छी तरह मिलान करता है, इसलिए यह एक सतत शैली को बरकरार रखता है। – Nyerguds

0

मैंने अभी इसका परीक्षण नहीं किया है ... अभी एक एक्सपी मशीन पर ... लेकिन मुझे संदेह है कि क्या आप अपने एप्लिकेशन के लिए फ्रेमवर्क सेटिंग्स के तहत "विंडोज एक्सपी स्टाइल" बंद कर देते हैं, तो आप जो भी खोज रहे हैं उसे प्राप्त करेंगे ।

+0

मैं इसे एक तत्व के लिए बंद करना चाहता हूं, सबकुछ नहीं। – Pieter

1

चरण 1: Download COMCTL32.ocx (संस्करण 5)। मेरा मानना ​​है कि संस्करण 5 पुनर्वितरण योग्य है, हालांकि संस्करण 6 मुझे लगता है कि नहीं है। जिसे मैंने लिंक किया है वह संभवतः रेडिस्ट नहीं है, लेकिन यही वह है जिस पर मैंने इन चरणों का परीक्षण किया था।
चरण 2: अपने टूलबॉक्स को कस्टमाइज़ करें और "COM घटक" टैब से डाउनलोड की गई फ़ाइल का चयन करें (इसके लिए ब्राउज़ करके)।
चरण 3: नई टूलबॉक्स प्रविष्टियों से एक प्रोग्रेसबार जोड़ें।

नोट: डिजाइनर में, यह अभी भी एक नई प्रगति की तरह दिखता है।

1

मुझे हंस के उत्तर पसंद हैं लेकिन नियंत्रण वर्ग को ओवरराइड करने की कोई आवश्यकता नहीं है। आप नियंत्रण के हैंडल का उपयोग कर SetWindowTheme पर कॉल करके केवल एक व्यक्तिगत नियंत्रण से Win7 शैली को हटा सकते हैं। यहां एक उदाहरण दिया गया है:

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

एक उत्कृष्ट सुझाव। मुझे एक ओवरराइड वर्ग बचाता है। – Nyerguds

संबंधित मुद्दे