Отображаю поле класса в PropertyGrid'е. Поле имеет тип enum. Список раскрывается, все ок.
Захотел большего:
Привязал к каждому значению enum свой image:
/// <summary>
/// Добавляет изображение, соответствующее каждому типу
/// </summary>
public class rpTypeEditor : System.Drawing.Design.UITypeEditor
{
public override bool GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext context)
{
return true;
}
public override void PaintValue(System.Drawing.Design.PaintValueEventArgs e)
{
System.Drawing.Bitmap image = null;
switch ((rpType)e.Value)
{
case rpType.Unknow:
image = (System.Drawing.Bitmap)my.Properties.Resources.ResourceManager.GetObject("IndicatorGray");
break;
case rpType.Created:
image = (System.Drawing.Bitmap)my.Properties.Resources.ResourceManager.GetObject("IndicatorRed");
break;
...
}
if (image != null)
{
System.Drawing.Rectangle rect = e.Bounds;
if (rect.Width != rect.Height) rect.Width = rect.Height;
image.MakeTransparent();
e.Graphics.DrawImage(image, rect);
}
}
Все ок, кроме 2-х моментов:
1) e.Bounds - прямоугольный, следовательно мои image'ы растягиваются. Исправил это проверкой
if (rect.Width != rect.Height) rect.Width = rect.Height;
2) вокруг image упорно рисуется черная рамка. А как от нее избавиться - ума не приложу.
Пожалуйста, подскажите, как убрать эту рамку.
Заранее благодарю.