C'est ce qui a fonctionné pour moi. Je crée une barre de progression indéterminée pour vous. Ajouter un contrôle personnalisé à votre projet/formulaire et insérer ce code:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace AnimatedCustomControls
{
sealed class IndeterminateProgressbar : Control
{
private readonly List<int> positions = new List<int>();
private readonly Timer tmrAnimation = new Timer {Interval = 5, Enabled = false};
private readonly Timer tmrAddPosition = new Timer {Interval = 500, Enabled = true};
public Color ProgressColor { get; set; }
public Color InactiveColor { get; set; }
public IndeterminateProgressbar()
{
DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
ProgressColor = Color.FromArgb(40, 190, 245);
InactiveColor = Color.FromArgb(40, 40, 40);
tmrAnimation.Tick += tmrAnimation_Tick;
tmrAddPosition.Tick += tmrAddPosition_Tick;
if (!DesignMode) tmrAnimation.Start();
}
void tmrAddPosition_Tick(object sender, EventArgs e)
{
positions.Add(1);
}
void tmrAnimation_Tick(object sender, EventArgs e)
{
if (DesignMode) tmrAnimation.Stop();
for (int i = 0; i < positions.Count; i++)
{
positions[i] += 2 + Math.Abs(positions[i])/50;
if (positions[i] > Width) positions.RemoveAt(i);
}
Invalidate();
}
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
if (Enabled)
{
positions.Clear();
positions.AddRange(new[] { Width/10, Width/3, Width/2, (int)(Width * 0.7) });
}
}
protected override void OnPaint(PaintEventArgs e)
{
if (Enabled)
{
e.Graphics.Clear(BackColor);
foreach (int i in positions)
{
e.Graphics.DrawLine(new Pen(Brushes.Black, 4f), i, 0, i, Height);
}
}
else e.Graphics.Clear(InactiveColor);
base.OnPaint(e);
}
}
}
Vous devriez alors construire votre solution et quand vous revenez au concepteur, le nouveau contrôle doit être dans votre boîte à outils .Faites-le glisser dans votre formulaire, définissez la valeur maximale et minimale et c'est tout.
J'ai créé un exemple de programme pour vous faire savoir comment il est utilisé:
private void Form1_Load(object sender, EventArgs e)
{
indeterminateProgressbar1.BackColor = Color.FromArgb(40, 190, 245); //it's an nice color ;)
indeterminateProgressbar1.Size = new Size(400, 4); //make it small in the height looks better
indeterminateProgressbar1.Visible = true;
}
Semble Microsoft ne peut pas lâcher « chapiteau » entièrement. :-D – Tomalak
Faites que "Windows XP ou supérieur". Je viens de tester sur Windows Vista et Windows 7 Beta (64 bits, cependant) et cela a fonctionné. – Joey
Remarque: Il s'agit d'une fonctionnalité .NET 2.0+. .NET 1.1 n'a pas exposé la propriété de style. –