Начал писать компонент.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace Twitch_prime_downloader
{
public class MultipleProgressBar : Control
{
[DefaultValue(null)]
public IEnumerable<MultipleProgressBarItem> Items { get; private set; }
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillRectangle(Brushes.LightGray, e.ClipRectangle);
if (Items != null)
{
int itemCount = Items.Count();
int itemWidth = Width / itemCount;
int iter = 0;
foreach (MultipleProgressBarItem item in Items)
{
Rectangle r = new Rectangle(itemWidth * iter, 0, 50, 20);
e.Graphics.FillRectangle(Brushes.Red, r);
iter++;
}
}
}
public void SetItems(IEnumerable<MultipleProgressBarItem> items)
{
Items = items;
Refresh();
}
}
public class MultipleProgressBarItem
{
public int MinValue { get; }
public int MaxValue { get; }
public int Value { get; }
public MultipleProgressBarItem(int minValue, int maxValue, int value)
{
MinValue = minValue;
MaxValue = maxValue;
Value = value;
}
}
}
Работоспособность ещё не проверял.
Как сделать для него редактор элементов (как у ListView
, например)? Чтобы можно было редактировать элементы в design time.