C# 中并沒有名為 “Progress” 的內置組件
首先,我們需要創建一個自定義的 ProgressBar 類,該類繼承自 System.Windows.Forms.Control。然后,我們可以在這個類中添加屬性、方法和事件,以實現所需的功能。
以下是一個簡單的 ProgressBar 類示例:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public class CustomProgressBar : Control
{
private int _value;
private int _minimum;
private int _maximum;
public CustomProgressBar()
{
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true);
_minimum = 0;
_maximum = 100;
}
[DefaultValue(0)]
public int Minimum
{
get { return _minimum; }
set
{
if (value < 0)
throw new ArgumentOutOfRangeException("Minimum", "Minimum should be greater than or equal to zero.");
_minimum = value;
Invalidate();
}
}
[DefaultValue(100)]
public int Maximum
{
get { return _maximum; }
set
{
if (value <= _minimum)
throw new ArgumentOutOfRangeException("Maximum", "Maximum should be greater than minimum.");
_maximum = value;
Invalidate();
}
}
[DefaultValue(0)]
public int Value
{
get { return _value; }
set
{
if (value < _minimum || value > _maximum)
throw new ArgumentOutOfRangeException("Value", "Value should be between minimum and maximum.");
_value = value;
Invalidate();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// Draw the progress bar background
e.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
// Calculate the progress bar value rectangle
float percentage = (float)_value / (float)(_maximum - _minimum);
int progressWidth = (int)(percentage * ClientRectangle.Width);
Rectangle valueRectangle = new Rectangle(0, 0, progressWidth, ClientRectangle.Height);
// Draw the progress bar value
e.Graphics.FillRectangle(new SolidBrush(ForeColor), valueRectangle);
}
}
這個示例中的 CustomProgressBar 類包含了 Minimum、Maximum 和 Value 屬性,以及一個 OnPaint 方法來繪制進度條。你可以根據需要修改這個類,以實現更多的功能和自定義外觀。
要在你的應用程序中使用這個自定義進度條,只需將其添加到你的項目中,然后在工具箱中找到它,將其拖放到你的窗體上即可。