Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe ProgressBarRenderer

 

Data di pubblicazione: ottobre 2016

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

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

System.Object
  System.Windows.Forms.ProgressBarRenderer

public sealed class ProgressBarRenderer

NomeDescrizione
System_CAPS_pubpropertySystem_CAPS_staticChunkSpaceThickness

Ottiene la larghezza, in pixel, dello spazio tra ciascuna porzione interna dell'indicatore di stato.

System_CAPS_pubpropertySystem_CAPS_staticChunkThickness

Ottiene la larghezza, in pixel, di una sola parte interna dell'indicatore di stato.

System_CAPS_pubpropertySystem_CAPS_staticIsSupported

Ottiene un valore che indica se la ProgressBarRenderer classe può essere utilizzata per disegnare un controllo indicatore di stato con gli stili visivi.

NomeDescrizione
System_CAPS_pubmethodSystem_CAPS_staticDrawHorizontalBar(Graphics, Rectangle)

Disegna un controllo barra di stato vuoto che viene riempito in senso orizzontale.

System_CAPS_pubmethodSystem_CAPS_staticDrawHorizontalChunks(Graphics, Rectangle)

Disegna una serie dell'indicatore di riempimento di un indicatore di stato orizzontale.

System_CAPS_pubmethodSystem_CAPS_staticDrawVerticalBar(Graphics, Rectangle)

Disegna un controllo barra di stato vuoto che viene riempito in senso verticale.

System_CAPS_pubmethodSystem_CAPS_staticDrawVerticalChunks(Graphics, Rectangle)

Disegna una serie dell'indicatore di riempimento di un indicatore di stato verticale.

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

La ProgressBarRenderer classe fornisce un set di static metodi che possono essere utilizzati per eseguire il rendering di un controllo indicatore di stato con lo stile di visualizzazione corrente del sistema operativo. Rendering di un controllo si riferisce alla creazione di un controllo dell'interfaccia utente. Ciò è utile se si sta creando un controllo personalizzato che deve avere l'aspetto dello stile di visualizzazione corrente. Per disegnare un indicatore di stato, utilizzare il DrawHorizontalBar o DrawVerticalBar metodi per disegnare il contorno dell'indicatore, quindi utilizzare il DrawHorizontalChunks o DrawVerticalChunks metodi per disegnare gli elementi di riempimento.

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

Questa classe incapsula la funzionalità di un System.Windows.Forms.VisualStyles.VisualStyleRenderer che viene impostato su uno degli elementi esposti dal System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.Bar, System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.BarVertical, System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.Chunk, e System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar.ChunkVertical classi. Per altre informazioni, vedere Rendering dei controlli con stili visivi.

WinXpFamily

Visual styles are supported only on these platforms.

Esempio di codice riportato di seguito viene illustrato come creare un controllo personalizzato che utilizza il DrawVerticalBar e DrawVerticalChunks metodi per disegnare un indicatore di stato verticale. Il controllo utilizza un Timer per ridisegnare la barra di avanzamento con un nuova porzione ogni secondo. Il SetupProgressBar metodo utilizza il ChunkThickness e ChunkSpaceThickness proprietà per calcolare l'altezza di ciascun rettangolo progressivamente maggiore che viene disegnato.

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
Disponibile da 2.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: