Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe ProgressBarRenderer

Fornisce metodi utilizzati per eseguire il rendering di un controllo indicatore di stato con gli stili visivi. Questa classe non può essere ereditata.

System.Object
  System.Windows.Forms.ProgressBarRenderer

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public sealed class ProgressBarRenderer

Il tipo ProgressBarRenderer espone i seguenti membri.

  NomeDescrizione
Proprietà pubblicaMembro staticoChunkSpaceThicknessOttiene la larghezza, in pixel, dello spazio tra ogni porzione interno dell'indicatore di stato.
Proprietà pubblicaMembro staticoChunkThicknessOttiene la larghezza, in pixel, di un singolo pezzo interno dell'indicatore di stato.
Proprietà pubblicaMembro staticoIsSupportedottiene un valore che indica se ProgressBarRenderer la classe può essere utilizzata per disegnare un controllo indicatore di stato con gli stili visivi.
In alto

  NomeDescrizione
Metodo pubblicoMembro staticoDrawHorizontalBardisegna un controllo indicatore di stato vuoto che riempie orizzontalmente.
Metodo pubblicoMembro staticoDrawHorizontalChunksDisegna un set di elementi dell'indicatore di stato che soddisfano un indicatore di stato orizzontale.
Metodo pubblicoMembro staticoDrawVerticalBardisegna un controllo indicatore di stato vuoto che riempie verticalmente.
Metodo pubblicoMembro staticoDrawVerticalChunksDisegna un set di elementi dell'indicatore di stato che soddisfano un indicatore di stato verticale.
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

ProgressBarRenderer la classe fornisce un insieme di static metodi utilizzabili per eseguire il rendering di un controllo indicatore di stato con lo stile visivo corrente del sistema operativo. Il rendering di un controllo fa riferimento alla creazione dell'interfaccia utente di un controllo. Ciò si rivela utile se si sta creando un controllo personalizzato che deve avere l'aspetto dello stile visivo corrente. per estrarre un indicatore di stato, utilizzare DrawHorizontalBar o DrawVerticalBar metodi per disegnare la barra vuota e quindi utilizzare DrawHorizontalChunks o DrawVerticalChunks metodi per disegnare gli elementi che hanno compilato la barra.

Se sono attivati stili di visualizzazione nel sistema operativo e degli stili di visualizzazione si applicano all'area client delle finestre dell'applicazione, i metodi di questa classe disegnano l'indicatore di stato con lo stile visivo corrente. In caso contrario, i metodi e le proprietà della classe genererà InvalidOperationException. Per determinare se i membri di questa classe possono essere utilizzati, è possibile controllare il valore di IsSupported proprietà.

Questa classe esegue il wrapping della funzionalità di un oggetto System.Windows.Forms.VisualStyles.VisualStyleRenderer che sia impostata su uno degli elementi esposti da System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.Bar, System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.BarVertical, System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.Chunke System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.ChunkVertical classi. Per ulteriori informazioni, vedere Rendering dei controlli con stili visivi.

Nota sulla piattaforma Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003: Gli stili di visualizzazione sono supportati solo su queste piattaforme.

Nell'esempio di codice seguente viene illustrato come creare un controllo personalizzato che utilizza DrawVerticalBar e DrawVerticalChunks metodi per disegnare un indicatore di stato verticale. Il controllo utilizza un oggetto Timer per ridisegnare l'indicatore di stato a una parte aggiunto ogni secondo. SetupProgressBar il metodo utilizza ChunkThickness e ChunkSpaceThickness proprietà per calcolare l'altezza di ogni progressivamente più grande rettangolo che viene tracciato.


using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace ProgressBarRendererSample
{
    public class Form1 : Form
    {
        private VerticalProgressBar bar1 = new VerticalProgressBar();
        private Button button1 = new Button();

        public Form1()
            : base()
        {
            this.Size = new Size(500, 500);
            bar1.NumberChunks = 30;
            button1.Location = new Point(150, 10);
            button1.Size = new Size(150, 30);
            button1.Text = "Start VerticalProgressBar";
            button1.Click += new EventHandler(button1_Click);
            Controls.AddRange(new Control[] { button1, bar1 });
        }

        [STAThread]
        public static void Main()
        {
            // The call to EnableVisualStyles below does not affect
            // whether ProgressBarRenderer.IsSupported is true; as 
            // long as visual styles are enabled by the operating system, 
            // IsSupported is true.
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

        // Start the VerticalProgressBar.
        private void button1_Click(object sender, EventArgs e)
        {
            bar1.Start();
        }
    }

    public class VerticalProgressBar : Control
    {
        private int numberChunksValue;
        private int ticks;
        private Timer progressTimer = new Timer();
        private Rectangle[] progressBarRectangles;

        public VerticalProgressBar()
            : base()
        {
            this.Location = new Point(10, 10);
            this.Width = 50;

            // The progress bar will update every second.
            progressTimer.Interval = 1000;
            progressTimer.Tick += new EventHandler(progressTimer_Tick);

            // This property also calls SetupProgressBar to initialize 
            // the progress bar rectangles if styles are enabled.
            NumberChunks = 20;

            // Set the default height if visual styles are not enabled.
            if (!ProgressBarRenderer.IsSupported)
            {
                this.Height = 100;
            }
        }

        // Specify the number of progress bar chunks to base the height on.
        public int NumberChunks
        {
            get
            {
                return numberChunksValue;
            }

            set
            {
                if (value <= 50 && value > 0)
                {
                    numberChunksValue = value;
                }
                else
                {
                    MessageBox.Show("Number of chunks must be between " +
                        "0 and 50; defaulting to 10");
                    numberChunksValue = 10;
                }

                // Recalculate the progress bar size, if visual styles 
                // are active.
                if (ProgressBarRenderer.IsSupported)
                {
                    SetupProgressBar();
                }
            }
        }

        // Draw the progress bar in its normal state.
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            if (ProgressBarRenderer.IsSupported)
            {
                ProgressBarRenderer.DrawVerticalBar(e.Graphics,
                    ClientRectangle);
                this.Parent.Text = "VerticalProgressBar Enabled";
            }
            else
            {
                this.Parent.Text = "VerticalProgressBar Disabled";
            }
        }

        // Initialize the rectangles used to paint the states of the 
        // progress bar.
        private void SetupProgressBar()
        {
            if (!ProgressBarRenderer.IsSupported)
            {
                return;
            }

            // Determine the size of the progress bar frame.
            this.Size = new Size(ClientRectangle.Width,
                (NumberChunks) * (ProgressBarRenderer.ChunkThickness +
                (2 * ProgressBarRenderer.ChunkSpaceThickness)) + 6);

            // Initialize the rectangles to draw each step of the 
            // progress bar.
            progressBarRectangles = new Rectangle[NumberChunks];

            for (int i = 0; i < NumberChunks; i++)
            {
                // Use the thickness defined by the current visual style 
                // to calculate the height of each rectangle. The size 
                // adjustments ensure that the chunks do not paint over 
                // the frame.

                int filledRectangleHeight =
                    ((i + 1) * (ProgressBarRenderer.ChunkThickness +
                    (2 * ProgressBarRenderer.ChunkSpaceThickness)));

                progressBarRectangles[i] = new Rectangle(
                    ClientRectangle.X + 3,
                    ClientRectangle.Y + ClientRectangle.Height - 3
                    - filledRectangleHeight,
                    ClientRectangle.Width - 6,
                    filledRectangleHeight);
            }
        }

        // Handle the timer tick; draw each progressively larger rectangle.
        private void progressTimer_Tick(Object myObject, EventArgs e)
        {
            if (ticks < NumberChunks)
            {
                using (Graphics g = this.CreateGraphics())
                {
                    ProgressBarRenderer.DrawVerticalChunks(g,
                        progressBarRectangles[ticks]);
                    ticks++;
                }
            }
            else
            {
                progressTimer.Enabled = false;
            }
        }

        // Start the progress bar.
        public void Start()
        {
            if (ProgressBarRenderer.IsSupported)
            {
                progressTimer.Start();
            }
            else
            {
                MessageBox.Show("VerticalScrollBar requires visual styles");
            }
        }
    }
}


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft