Windows 98-style progress bar

后端 未结 4 1470
轻奢々
轻奢々 2020-12-17 03:11

I use Windows 7, so my progress bars all have that green look. I\'d like something a little more simplistic though, perhaps something resembling the Windows 98 progress bar.

相关标签:
4条回答
  • 2020-12-17 03:23

    Step 1: Download COMCTL32.ocx (version 5). I believe Version 5 is redistributable, though version 6 I think is not. The one I linked to is probably not the redist one, but that's the one I tested these steps on.
    Step 2: Customize your toolbox and select the file you downloaded from the "COM Components" tab (by browsing for it).
    Step 3: Add a Progressbar from the new toolbox entries.

    Note: In the designer, it will still look kind of like a newer progressbar.

    0 讨论(0)
  • 2020-12-17 03:34

    I like Hans' answer but there's no need to override the control's class. You can remove the Win7 style from an individual control simply by calling SetWindowTheme using the control's handle. Here's an example:

    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 讨论(0)
  • 2020-12-17 03:35

    You cannot easily get the exact Win98 look without a pretty drastic rewrite of the control. But a simple flat light-blue progress bar can be had by turning off visual styles. Like this:

    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);
    }
    
    0 讨论(0)
  • 2020-12-17 03:36

    I haven't tested this... on an XP machine right now... but I suspect if you turn off "Windows XP Styles" under the framework settings for your application, you will get what you are looking for.

    0 讨论(0)
提交回复
热议问题